1

chartengine で複数のシリーズをプロットできません。データセットに 2 番目のシリーズを追加すると、機能せず、実際にクラッシュします。データセットにシリーズを 1 つだけ追加すると、コードは正常に機能します。

デバッグは、これを行うときにここでクラッシュすることを示しています: ChartFactory.getLineChartView(context, dataset, seriesRenderer);

これがコードスニペットです。どんな助けでも大歓迎です。

public class LineGraph {

public View getView(Context context) {

    int x[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
    int y[] = {30,34,25,45,5,30,20,25,29,30,10,20,30,40,50,60,70,60,50,40};     

    TimeSeries series = new TimeSeries("Scores");
    TimeSeries lineSeries = new TimeSeries("Line");

    for(int i=0;i<x.length;i++) {
        series.add(x[i], y[i]);
        series.addAnnotation(i + "", x[i], y[i]+5);

        lineSeries.add(x[i], y[i]+10);
    }

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    dataset.addSeries(series);
    dataset.addSeries(lineSeries);

    XYSeriesRenderer renderer = new XYSeriesRenderer();
    renderer.setPointStyle(PointStyle.CIRCLE);
    renderer.setFillPoints(true);
    renderer.setColor(Color.WHITE);
    renderer.setLineWidth(2f);

    XYMultipleSeriesRenderer seriesRenderer = new XYMultipleSeriesRenderer();
    seriesRenderer.addSeriesRenderer(renderer);
    seriesRenderer.setShowAxes(false); // show both axes
    seriesRenderer.setShowLegend(false);
    seriesRenderer.setShowLabels(false);
    seriesRenderer.setZoomButtonsVisible(false); // bye bye zoom  

    //seriesRenderer.setMargins(new int[] {1, 1, 1, 10});

    seriesRenderer.setXAxisMin(0);
    seriesRenderer.setXAxisMax(10);

    seriesRenderer.setTextTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/Lifestyle Rounded M54.ttf"));
    seriesRenderer.setPointSize(10f);
    seriesRenderer.setPanEnabled(true, false);
    seriesRenderer.setGridColor(Color.GRAY);


    View view = ChartFactory.getLineChartView(context, dataset, seriesRenderer);

    return view;
}

}

そして、これが私がそれをどのように使用しているかです:

public class PerformanceActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_performance);
    Utils.overrideFonts(this, findViewById(android.R.id.content));

    LineGraph lineGraph = new LineGraph();
    View graphView = lineGraph.getView(getApplicationContext());

    RelativeLayout graphHolder = (RelativeLayout)findViewById(R.id.rl_graph);
    graphHolder.addView(graphView);     
}
4

2 に答える 2

2

シリーズごとにシリーズ レンダラーを追加する必要があります。追加したレンダラーは 1 つだけです。2番目を追加すると、準備完了です。

于 2013-06-21T18:09:06.023 に答える