2013-03-06 16 views
6

私はアンドロイドでachartengineをやっていて、すべての作品を完成させています。折れ線グラフには1つの問題があります。私はxaxisラベルに言及していますが、2,4,6,8,10,12など私のxaxisラベルでオーバーレイし、私はxaxisで2,4,6,8,10,12のラベルを隠したいと思っています。ここAchartEngine Line Chart Xaxis Android

enter image description here

は完全なコードです:

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, 4, 5, 6, 7, 8, 9, 10, 11, 12 }); 
     x.add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }); 
     // } 
     List<double[]> values = new ArrayList<double[]>(); 
     values.add(new double[] { 9, 10, 11, 15, 19, 23, 26, 25, 22, 18, 13, 
         10 }); 
     values.add(new double[] { 11, 13, 21, 10, 40, 10, 12,15, 24, 20, 15, 
       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", 0, 12.5, 0, 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, 20, 0, 40 }); 
     //renderer.setZoomLimits(new double[] { 0, 20, 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, 15, 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[]> xValues, 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); 
     } 



    } 

} 

あなたは大歓迎で私を助けることができる。uは理解していない場合は下図与え見ます

ここ
renderer.setXLabels(0); 

と完全クラスコードを:

答えて

7

は最終的に私は以下のコードを試してきた解決策を持って

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","2second" }; 
     List<double[]> x = new ArrayList<double[]>(); 
     x.add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }); 
     x.add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }); 
     // } 
     List<double[]> values = new ArrayList<double[]>(); 
     values.add(new double[] { 9, 10, 11, 15, 19, 23, 26, 25, 22, 18, 13, 
         10 }); 
     values.add(new double[] { 11, 13, 21, 10, 40, 10, 12,15, 24, 20, 15, 
       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", 0, 12.5, 0, 45, Color.LTGRAY, 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, 10, 15 }); 
     //renderer.setZoomButtonsVisible(true); 
     //renderer.setPanLimits(new double[] { 0, 20, 0, 40 }); 
     //renderer.setZoomLimits(new double[] { 0, 20, 0, 40 }); 
     renderer.setPanEnabled(false, false); 
     renderer.setZoomEnabled(false, 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,"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, 15, 20 }); 
     renderer2.setMargins(new int[] { 25,35, 10, 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, 
      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[]> xValues, 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); 
     } 



    } 

} 
-1

あなたの現在のコードに追加する必要がある唯一のコードは、次の2つです行:

renderer.setXLabels(RESULT_OK); 
renderer.clearXTextLabels(); 

レンダラー設定を宣言した後で、これらのステートメントを必ず追加してください。BEFOREカスタムX軸テキストラベルを設定するコード。

プログラム内で複数のレンダリングメソッドが使用されているので、XYMultipleSeriesRendererを実装するメソッドの最後に2行のコードを含める必要があります。繰り返しますが、カスタムテキストラベルを実装する前に、これをコードに追加してください。 :)

+0

RESULT_OKとは何ですか?カスタムラベルを追加する前にsetXLabels()を呼び出す必要があるのはなぜですか? –

関連する問題