Presentation is loading. Please wait.

Presentation is loading. Please wait.

Plotting on android. New app, ShowPlot Get achartengine –

Similar presentations


Presentation on theme: "Plotting on android. New app, ShowPlot Get achartengine –"— Presentation transcript:

1 Plotting on android

2 New app, ShowPlot Get achartengine – http://code.google.com/p/achartengine/downloads/list http://code.google.com/p/achartengine/downloads/list – Get jar Add aChartEngine.jar – Right-click on src, – select build path, – select “configure build path” – In libraries tab, select add external jar, browse for jar that you downloaded – In order and export tab, select jar Layout – add linear layout – In xml, make added linear layout to be –

3 A plot has two parts – Data – Renderer – We make functions to define each part Data – public XYMultipleSeriesDataset getMyData() { – XYMultipleSeriesDataset myData = new XYMultipleSeriesDataset(); – XYSeries dataSeries = new XYSeries("data"); – dataSeries.add(0,2); – dataSeries.add(1,1); – dataSeries.add(2,4); – dataSeries.add(3,3); – dataSeries.add(4,2); – dataSeries.add(5,6); – myData.addSeries(dataSeries); – return myData; – }

4 renderer public XYMultipleSeriesRenderer getMyRenderer() { XYSeriesRenderer r = new XYSeriesRenderer(); r.setColor(Color.BLUE); r.setLineWidth(10); r.setPointStyle(PointStyle.SQUARE); // CIRCLE, DIAMOND, POINT, TRIANGLE, X r.setFillPoints(true); // not for point or x // don't know how to set point size or point color r.setFillBelowLine(true); r.setFillBelowLineColor(Color.WHITE); XYMultipleSeriesRenderer myRenderer = new XYMultipleSeriesRenderer(); myRenderer.addSeriesRenderer(r); return myRenderer; }

5 Make plot Add member variable – private GraphicalView mChartView; In onCreate, add – if (mChartView == null) { LinearLayout layout = (LinearLayout) findViewById(R.id.chart); mChartView = ChartFactory.getLineChartView(this, getMyData(),getMyRenderer()); layout.addView(mChartView); – } else { – mChartView.repaint(); // use this whenever data has changed and you want to redraw } Make onResume – @Override – protected void onResume() { super.onResume(); if (mChartView != null) { – mChartView.repaint(); } – } run

6 Make another set of data Add to getMyData, just before return – XYSeries dataSeries2 = new XYSeries("data"); – dataSeries2.add(0,1); – dataSeries2.add(1,1); – dataSeries2.add(2,2); – dataSeries2.add(3,1); – dataSeries2.add(4,2); – dataSeries2.add(5,4); – myData.addSeries(dataSeries2);

7 More renderer Must have same number of renderer entries as data sets In getMyRenderer, just before return, add – XYSeriesRenderer r2 = new XYSeriesRenderer(); – r2.setColor(Color.RED); – r2.setLineWidth(10); – r2.setPointStyle(PointStyle.DIAMOND); – r2.setFillPoints(true); – r2.setFillBelowLine(false); – myRenderer.addSeriesRenderer(r2); run

8 Other plot types Replace – mChartView = ChartFactory.getLineChartView(this, getMyData(),getMyRenderer()); With – mChartView = ChartFactory.getBarChartView(this, getMyData(),getMyRenderer(), BarChart.Type.DEFAULT); Or with, – mChartView = ChartFactory.getBarChartView(this, getMyData(),getMyRenderer(), BarChart.Type.STACKED); Or with – mChartView = ChartFactory.getScatterChartView(this, getMyData(),getMyRenderer());

9 Time series The x-axis should be time public XYMultipleSeriesDataset getMyTimeSeriesData() { – XYMultipleSeriesDataset myData = new XYMultipleSeriesDataset(); – TimeSeries dataSeries = new TimeSeries("data"); – dataSeries.add(new GregorianCalendar(2011, 5, 9, 18, 15, 1).getTimeInMillis(),0); – dataSeries.add(new GregorianCalendar(2011, 5, 9, 18, 15, 5).getTimeInMillis(),2); – dataSeries.add(new GregorianCalendar(2011, 5, 9, 18, 15, 15).getTimeInMillis(),1); – dataSeries.add(new GregorianCalendar(2011, 5, 9, 18, 15, 25).getTimeInMillis(),3); – dataSeries.add(new GregorianCalendar(2011, 5, 9, 18, 15, 35).getTimeInMillis(),1); – dataSeries.add(new GregorianCalendar(2011, 5, 9, 18, 15, 55).getTimeInMillis(),2); – myData.addSeries(dataSeries); – return myData; } !Change getMyRenderer to only make a single renderer entry! In onCreate, put – mChartView = ChartFactory.getTimeChartView(this, getMyTimeSeriesData(),getMyRenderer(), null); Run, note x-axis is in time

10 bubble public XYMultipleSeriesDataset getMyData3() { – XYMultipleSeriesDataset myData = new XYMultipleSeriesDataset(); – XYValueSeries dataSeries = new XYValueSeries("data"); – dataSeries.add(0,0,1); – dataSeries.add(1,2,2); – dataSeries.add(2,1,3); – dataSeries.add(3,3,2); – dataSeries.add(4,1,1); – dataSeries.add(5,2,0); – myData.addSeries(dataSeries); – return myData; } In onCreate, – mChartView = ChartFactory.getBubbleChartView(this, getMyData3(),getMyRenderer());


Download ppt "Plotting on android. New app, ShowPlot Get achartengine –"

Similar presentations


Ads by Google