我在
android上工作achartengine并完成所有的工作我在线图中遇到一个问题我提到了xaxis标签,但它的显示像2,4,6,8,10,12等等与我的xaxis标签覆盖,我想要在xaxis中隐藏2,12个标签.如果你不明白,请参见下图:
这是完整的代码:
public class ChartExample extends Activity { private GraphicalView mChartView; XYMultipleSeriesRenderer renderer; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.layout_chart); LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout2); String[] titles = new String[] { "spens1","2second" }; List<double[]> x = new ArrayList<double[]>(); x.add(new double[] { 1,2,3,5,7,9,11,12 }); x.add(new double[] { 1,12 }); // } List<double[]> values = new ArrayList<double[]>(); values.add(new double[] { 9,15,19,23,26,25,22,18,13,10 }); values.add(new double[] { 11,21,40,12,24,20,12 }); int[] colors = new int[] { Color.BLUE,Color.RED}; PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE,PointStyle.CIRCLE}; renderer = buildRenderer(colors,styles); int length = renderer.getSeriesRendererCount(); for (int i = 0; i < length; i++) { ((XYSeriesRenderer) renderer.getSeriesRendererAt(i)) .setFillPoints(true); } setChartSettings(renderer,"score CARD VIEW","Attetempts","Marks scored",12.5,45,Color.LTGRAY,Color.LTGRAY); renderer.setXLabels(12); renderer.setYLabels(10); renderer.setShowGrid(false); renderer.setXLabelsAlign(Align.CENTER); renderer.setYLabelsAlign(Align.CENTER); //renderer.setZoomButtonsVisible(true); //renderer.setPanLimits(new double[] { 0,40 }); //renderer.setZoomLimits(new double[] { 0,40 }); renderer.setPanEnabled(false,false); renderer.setZoomEnabled(false,false); renderer.setShowLegend(false); for(int k=0;k<12;k++) { renderer.addXTextLabel(k+1,"test"); } if (mChartView == null) { Log.d("Oncreate ","if (mChartView == null)"); mChartView = ChartFactory.getLineChartView(this,mDataset(titles,x,values),renderer); layout.addView(mChartView,new LayoutParams( LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); } else { mChartView.repaint(); Log.d("Oncreate ","if (mChartView != null)"); } } private void setChartSettings(XYMultipleSeriesRenderer renderer3,String title,String xTitle,String yTitle,double xMin,double xMax,double yMin,double yMax,int axesColor,int labelsColor) { // TODO Auto-generated method stub renderer3.setChartTitle(title); renderer3.setXTitle(xTitle); renderer3.setYTitle(yTitle); renderer3.setXAxisMin(xMin); renderer3.setXAxisMax(xMax); renderer3.setYAxisMin(yMin); renderer3.setYAxisMax(yMax); renderer3.setAxesColor(axesColor); renderer3.setLabelsColor(labelsColor); } private XYMultipleSeriesRenderer buildRenderer(int[] colors,PointStyle[] styles) { // TODO Auto-generated method stub XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); setRenderer(renderer,colors,styles); return renderer; } private void setRenderer(XYMultipleSeriesRenderer renderer2,int[] colors,PointStyle[] styles) { // TODO Auto-generated method stub renderer2.setAxisTitleTextSize(16); renderer2.setChartTitleTextSize(20); renderer2.setLabelsTextSize(15); renderer2.setLegendTextSize(15); renderer2.setPointSize(5f); renderer2.setMargins(new int[] { 20,30,20 }); int length = colors.length; for (int i = 0; i < length; i++) { XYSeriesRenderer r = new XYSeriesRenderer(); r.setColor(colors[i]); r.setPointStyle(styles[i]); renderer2.addSeriesRenderer(r); } } private XYMultipleSeriesDataset mDataset(String[] titles,List<double[]> xValues,List<double[]> yValues) { // TODO Auto-generated method stub XYMultipleSeriesDataset dataset1 = new XYMultipleSeriesDataset(); addXYSeries(dataset1,titles,xValues,yValues,0); return dataset1; } private void addXYSeries(XYMultipleSeriesDataset dataset,String[] titles,List<double[]> yValues,int scale) { // TODO Auto-generated method stub int length = titles.length; for (int i = 0; i < length; i++) { double[] xV = xValues.get(i); XYSeries series = new XYSeries(titles[i],scale); double[] yV = yValues.get(i); int seriesLength = xV.length; for (int k = 0; k < seriesLength; k++) { series.add(xV[k],yV[k]); } dataset.addSeries(series); } } }
能帮到我了吗?
解决方法
最后我得到了解决方案我已经尝试过以下代码:
renderer.setXLabels(0);
和完整的类代码:
package com.example.lockexample; import java.util.ArrayList; import java.util.List; import org.achartengine.ChartFactory; import org.achartengine.GraphicalView; import org.achartengine.chart.PointStyle; import org.achartengine.model.XYMultipleSeriesDataset; import org.achartengine.model.XYSeries; import org.achartengine.renderer.XYMultipleSeriesRenderer; import org.achartengine.renderer.XYSeriesRenderer; import android.app.Activity; import android.graphics.Color; import android.graphics.Paint.Align; import android.os.Bundle; import android.util.Log; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; public class ChartExample extends Activity { private GraphicalView mChartView; XYMultipleSeriesRenderer renderer; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.layout_chart); LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout2); String[] titles = new String[] { "spens1",Color.LTGRAY); //renderer.setXLabels(12); renderer.setYLabels(10); renderer.setXLabels(0); renderer.setShowGrid(true); renderer.setXLabelsAlign(Align.CENTER); renderer.setYLabelsAlign(Align.RIGHT); renderer.setMargins(new int[] { 25,35,15 }); //renderer.setZoomButtonsVisible(true); //renderer.setPanLimits(new double[] { 0,false); renderer.setMarginsColor(Color.parseColor("#EEEDED")); renderer.setXLabelsColor(Color.BLACK); renderer.setYLabelsColor(0,Color.BLACK); renderer.setApplyBackgroundColor(true); renderer.setBackgroundColor(Color.parseColor("#FBFBFC")); //renderer.setShowLegend(false); for(int k=0;k<12;k++) { renderer.addXTextLabel(k+1,int labelsColor) { // TODO Auto-generated method stub renderer3.setChartTitle(title); renderer3.setXTitle(xTitle); renderer3.setYTitle(yTitle); renderer3.setXAxisMin(xMin); renderer3.setXAxisMax(xMax); renderer3.setYAxisMin(yMin); renderer3.setYAxisMax(yMax); renderer3.setAxesColor(axesColor); renderer3.setLabelsColor(labelsColor); } private XYMultipleSeriesRenderer buildRenderer(int[] colors,PointStyle[] styles) { // TODO Auto-generated method stub renderer2.setAxisTitleTextSize(16); renderer2.setChartTitleTextSize(20); renderer2.setLabelsTextSize(15); renderer2.setLegendTextSize(15); renderer2.setPointSize(5f); //renderer2.setMargins(new int[] { 20,20 }); renderer2.setMargins(new int[] { 25,15 }); int length = colors.length; for (int i = 0; i < length; i++) { XYSeriesRenderer r = new XYSeriesRenderer(); r.setColor(colors[i]); r.setPointStyle(styles[i]); renderer2.addSeriesRenderer(r); } } private XYMultipleSeriesDataset mDataset(String[] titles,yV[k]); } dataset.addSeries(series); } } }