Android - Как реализовать линейный график с помощью Achartengine - PullRequest
4 голосов
/ 07 октября 2011

Я новичок в концепции графа в Android.В моем приложении я хочу реализовать линейный график, используя achartengine.У меня есть демоверсия achartengine, она состоит из большого количества кода.Я не могу понять линейный график.Я хочу простой линейный график, используя achartengine.Пожалуйста, кто-нибудь может мне помочь.

спасибо

1 Ответ

14 голосов
/ 19 декабря 2011


Следующий метод сгенерирует случайные точки (x, y) и добавит их в XYSeries (это серия точек, которые должны быть нанесены на график).

private XYMultipleSeriesDataset getDemoDataset() {
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    final int nr = 7;
    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, 20 + r.nextInt() % 100);
        }
        dataset.addSeries(series);
    }
    return dataset;
}

Следующий метод вернет кратноесредство визуализации, которое используется для рисования линейных диаграмм.

private XYMultipleSeriesRenderer getDemoRenderer() {
    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
    renderer.setAxisTitleTextSize(12);
    renderer.setChartTitleTextSize(12);
    renderer.setLabelsTextSize(15);
    renderer.setLegendTextSize(15);
    renderer.setPointSize(5f);
    renderer.setMargins(new int[] { 20, 30, 15, 0 });
    XYSeriesRenderer r = new XYSeriesRenderer();
    r.setColor(Color.BLACK);
    r.setPointStyle(PointStyle.CIRCLE);
    r.setFillBelowLine(false);
    r.setFillPoints(true);
    renderer.addSeriesRenderer(r);
    setChartSettings(renderer);
    return renderer;
}

Следующий метод установит настройки для вашего графика.Вы можете найти дополнительные параметры в документах, предоставляемых AChartEngine.

private void setChartSettings(XYMultipleSeriesRenderer renderer) {
    renderer.setChartTitle("Chart demo");
    renderer.setXTitle("x values");
    renderer.setYTitle("y values");
    renderer.setApplyBackgroundColor(false);
    renderer.setRange(new double[] {0,6,-70,40});
    renderer.setFitLegend(false);
    renderer.setAxesColor(Color.BLACK);
    renderer.setShowGrid(true);
    renderer.setXAxisMin(0.5);
    renderer.setXAxisMax(10.5);
    renderer.setYAxisMin(0);
    renderer.setZoomEnabled(false);
    renderer.setYAxisMax(30);
  }

Теперь вы можете получить линейный график двумя способами:

  • Диаграмма как представление, которое можетбыть добавленным в любой макет:

    ChartFactory.getLineChartView(this, getDemoDataset(), getDemoRenderer());

  • Диаграмма как намерение для нового действия в целом

    ChartFactory.getLineChartIntent(this, getDemoDataset(), getDemoRenderer());

PS: SERIES_NR - это константа, которая сообщает, сколько рядов линий вы хотите нарисовать.

...