【问题标题】:AChartGraph with multiple lines具有多条线的 AChartGraph
【发布时间】:2012-05-03 11:42:41
【问题描述】:

我想从表格中获取一些值并将它们存储在多折线图中。 当我只使用一列(脂肪)时,它会正确显示图表,但是当我添加另一列或两列时,它会给我一个错误消息: 数据集和渲染器不应为空,并且不应具有相同数量的系列。 你能帮我解决这个错误吗?

  public XYMultipleSeriesDataset getFatDataset() {

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    Cursor c = database.rawQuery("select * from dailystats;", null);
    float i = 1.0f;

    c.moveToFirst();
    XYSeries seriesFat = new XYSeries("Fat");
    while(!c.isAfterLast()) {
        seriesFat.add(i++, c.getDouble(2));

        c.moveToNext();
    }
    dataset.addSeries(seriesFat);

   i = 1.0f;
    c.moveToFirst();
    XYSeries seriesProtein = new XYSeries("Protein");
    while(!c.isAfterLast()) {

        seriesProtein.add(i++, c.getDouble(3));

        c.moveToNext();
    }
    dataset.addSeries(seriesProtein);

    c.moveToFirst();
    i = 1.0f;
    XYSeries seriesCarbs = new XYSeries("Carbs");
    while(!c.isAfterLast()) {

        seriesCarbs.add(i++, c.getDouble(4));
        c.moveToNext();
    }
    dataset.addSeries(seriesCarbs);

    return dataset;
}

这是生成图表的代码:

public class ChartActivity {

public Intent getIntent(Context context)

{

XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();


XYMultipleSeriesRenderer mrenderer = new XYMultipleSeriesRenderer();
XYSeriesRenderer renderer = new XYSeriesRenderer();
mrenderer.addSeriesRenderer(renderer);

DatabaseAdapter dba = new DatabaseAdapter(context);
dba.open();


Intent intent = ChartFactory.getLineChartIntent(context, dba.getFatDataset(), mrenderer,"line graph");
dba.close();

return intent;

}

}

【问题讨论】:

    标签: android achartengine linechart


    【解决方案1】:

    报告的错误非常明确:Dataset and renderer should not be null and should not have the same number of series 表示您使用了不同数量的系列和系列渲染器。事实上,您正在添加 两个 数据集:

    //...
    dataset.addSeries(seriesFat);
    //....
    dataset.addSeries(seriesCarbs);
    //....
    

    但你只有一个 XYSeriesRenderer():

    mrenderer.addSeriesRenderer(renderer);
    

    在我看来,您的代码应该开始工作,只需将另一个渲染器添加到 XYMultipleSeriesRenderer(),请尝试以下两行:

    XYSeriesRenderer renderer2 = new XYSeriesRenderer();
    mrenderer.addSeriesRenderer(renderer2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2017-09-06
      • 2021-12-30
      • 1970-01-01
      • 2017-07-31
      相关资源
      最近更新 更多