Пример в демонстрационном исходном коде achartengine показывает неверный результат - PullRequest
0 голосов
/ 30 марта 2012

На самом деле я работаю над инструментами построения графиков для Android.Во время поиска я получил инструмент achartengine и скачал исходный код демо.В этом источнике есть пример для MultipleTemperatureChart.java.В этом примере он строит график с двумя осями y и одной осью x.Странная вещь, которую я замечаю, состоит в том, что когда я просто передаю значение в коде самостоятельно, а не в значении, приведенном в примере кода.Я заметил, что график графика против левой оси Y и оси X в порядке.Но график графика, использующий правую ось y и ось x , неверен. Почему это происходит с ошибками в коде.Изменения, которые я сделал в коде, показаны в виде знака ** в коде, который я вставил ниже.

public Intent execute(Context context) {
String[] titles = new String[] { "Crete" };
List<double[]> x = new ArrayList<double[]>();
for (int i = 0; i < titles.length; i++) {
  **x.add(new double[] { 1, 2, 3, 4});
}
List<double[]> values = new ArrayList<double[]>();
**values.add(new double[] { 10, 15, 20, 25});
int[] colors = new int[] { Color.BLUE, Color.YELLOW };
PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND,
    PointStyle.TRIANGLE, PointStyle.SQUARE };
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(2);
setRenderer(renderer, colors, styles);
int length = renderer.getSeriesRendererCount();
for (int i = 0; i < length; i++) {
  ((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true);
}
setChartSettings(renderer, "Average temperature", "Month", "Temperature", 0.5, 12.5, 0, 32,
    Color.LTGRAY, Color.LTGRAY);
renderer.setXLabels(12);
renderer.setYLabels(10);
renderer.setShowGrid(true);
renderer.setXLabelsAlign(Align.RIGHT);
renderer.setYLabelsAlign(Align.RIGHT);
renderer.setZoomButtonsVisible(true);
renderer.setPanLimits(new double[] { -10, 20, -10, 40 });
renderer.setZoomLimits(new double[] { -10, 20, -10, 40 });

renderer.setYTitle("Hours", 1);
renderer.setYAxisAlign(Align.RIGHT, 1);
renderer.setYLabelsAlign(Align.LEFT, 1);
XYMultipleSeriesDataset dataset = buildDataset(titles, x, values);
values.clear();
**values.add(new double[] { 10, 15, 20, 25});
addXYSeries(dataset, new String[] { "Sunshine hours" }, x, values, 1);
Intent intent = ChartFactory.getLineChartIntent(context, dataset, renderer,
    "Average temperature");
return intent;
}

Снимок экрана для графика, который я обнаружил после этих изменений

enter image description here

1 Ответ

0 голосов
/ 15 апреля 2012

У вас есть только одна ось X, то есть:

x.add(new double[] { 1, 2, 3, 4});

Вам не нужна еще одна?

...