The following method generates random points (x, y) and adds them to the XYSeries (this is a series of points that will be plotted).
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; }
The following method will return several renderers that are used to draw line charts.
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; }
The following method will set the preferences for your chart. You can look for additional options in the documents provided by 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); }
Now you can get a line chart in two ways:
A diagram as a view that can be added to any layout:
ChartFactory.getLineChartView(this, getDemoDataset(), getDemoRenderer());
Chart as intention for new alltogether action
ChartFactory.getLineChartIntent(this, getDemoDataset(), getDemoRenderer());
PS: SERIES_NR is a constant that shows how many lines you want to draw.
source share