Я создаю проект Android, в котором я отображаю изменения валют между двумя датами с помощью библиотеки GraphView jjoe64 . У меня приложение работает, строит линейный график изменения валют, без ошибок.
Проблема в том, что у меня есть другой метод (movingAverage
) в другом классе, который вычисляет скользящее среднее для данных изменений. Расчеты в этом методе должны быть правильными, но у меня есть проблема с отображением этого нового метода на отдельном линейном графике в том же приложении. Итак, что я хочу:
- Один линейный график, который показывает изменения в данной валюте (это работает)
- Другой линейный график в том же приложении, показывающий скользящую среднюю изменений в валютах (не работает)
То, что я не могу заставить работать, это выполнить movingAverage
и затем отобразить его значения в новом линейном графике. Так важно, как я могу построить график из массива? Или я все делаю неправильно?
Вот метод, который строит график и показывает график при запуске приложения:
public void showGraph() {
getCurrencyValues();
double[] values = currencyData;
LineGraphSeries<DataPoint> series = new LineGraphSeries();
LineGraphSeries<DataPoint> avg = new LineGraphSeries();
for(int i = 0; i < values.length; i++) {
series.appendData(new DataPoint(i, values[i]), true, values.length);
}
GraphView graph = findViewById(R.id.graph);
graph.getViewport().setXAxisBoundsManual(true);
graph.getViewport().setMinX(0);
graph.getViewport().setMaxX(values.length - 1);
graph.getViewport().setYAxisBoundsManual(true);
graph.getViewport().setMinY(9);
graph.getViewport().setMaxY(11.5);
series.setColor(Color.BLUE);
avg.setColor(Color.RED);
double[] movingAverageValues = Statistics.movingAverage(currencyData, 100); // How can I get this array to plot a graph in the same app
graph.addSeries(series); // This one works as it should
graph.addSeries(avg);
}
Это метод movingAverage
, значения которого я хочу построить в виде отдельного графика в приложении.
static double[] movingAverage(double[] values, int ws) {
double[] smoothVals = new double[values.length-ws];
for(int i = 0; i < (values.length - ws); i++) {
double sum = 0;
for (int j = i; j < (i + ws); j++) {
sum += values[j];
}
smoothVals[i] = sum/ws;
}
return smoothVals;
}