series.add не добавляет новую серию

Я модифицировал демонстрационную версию XYseries для построения диаграмм с Android с помощью AChartEngine. Он не добавляет второй массив в качестве новой серии. Вот мой код.

 private XYMultipleSeriesDataset getDemoDataset() {
     XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    final int nr = 10;


    double[] test1=new double[] {121.0,122.0,123.0,124.0,125.0,126.0,127.0,128.0,129.0,130.0};
    double[] test2=new double[] {131.0,132.0,133.0,134.0,135.0,136.0,137.0,138.0,139.0,140.0};

    double[] testArray= new double[test1.length + test2.length];
    System.arraycopy(test1, 0, testArray, 0, test1.length);
    System.arraycopy(test2, 0, testArray, test1.length, test2.length);

    for(double d:testArray){
    Log.i(MAIN_DEBUG_TAG, "testArray "+d);
    }

      Random r = new Random();
      for (int i = 0; i < SERIES_NR; i++) {
      XYSeries series = new XYSeries("Demo series " + (i + 1));
      for (int k = 0; k < nr; k++) {

     // series.add(k, 120 + r.nextInt() % 100);
    series.add(k, testArray[k]);

    Log.i(MAIN_DEBUG_TAG, "series.add  "+k +"   "+test1[k]);

     }
    dataset.addSeries(series);        
    }         

        return dataset;
  }

Массив Test1 повторяется. Если я удалю комментарии из series.add(k, 120+ random......, он создаст 2 серии данных для построения графика. Любая помощь приветствуется. TIA


person Trey Balut    schedule 11.09.2011    source источник


Ответы (1)


Вы добавляете одни и те же точки данных дважды — с testArray[0] по testArray[9] в обеих итерациях внешнего цикла. k всегда идет от 0 к 9, и текущий код не зависит ни от чего, кроме k:

// No sign of anything that changes between iterations of the outer loop
series.add(k, testArray[k]);

Как насчет:

 series.add(k, testArray[k + i * nr]);

Таким образом, первая серия будет иметь от testArray[0] до testArray[9], а вторая — от testArray[10] до testArray[19].

person Jon Skeet    schedule 11.09.2011
comment
Бинго, как обычно, ответ Джона лаконичный и правильный. Спасибо, Джон, ты предотвратил серьезные удары головой. - person Trey Balut; 12.09.2011