Построить линейный график из двойного массива в библиотеке Java GraphView - PullRequest
0 голосов
/ 22 марта 2020

Я создаю проект 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;
}
...