AChartGraph con varias líneas

Quiero obtener algunos valores de una tabla y almacenarlos en un gráfico de varias líneas. Cuando uso solo una columna (gruesa), muestra un gráfico correctamente, pero cuando agrego otra columna o dos, me da un error que dice: el conjunto de datos y el renderizador no deben ser nulos y no deben tener la misma cantidad de series. ¿Podría ayudarme a corregir el error?

  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;
}

Y aquí está el código para generar el gráfico:

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;

}

}

preguntado el 03 de mayo de 12 a las 12:05

1 Respuestas

El error informado es bastante claro: Dataset and renderer should not be null and should not have the same number of series significa que está utilizando un número diferente de series y procesadores de series. De hecho, estás agregando Dos conjuntos de datos:

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

pero solo tienes uno XYSeriesRenderer():

mrenderer.addSeriesRenderer(renderer);

En mi opinión, su código debería comenzar a funcionar simplemente agregando otro renderizador al XYMultipleSeriesRenderer(), intente con estas dos líneas:

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

contestado el 04 de mayo de 12 a las 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.