首先需要下載Jar包:圖表jar.rar
線性圖:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // 1, 構造顯示用渲染圖XY XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); // 2,進行顯示 XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); // 2.1, 構建資料 Random r = new Random(); for (int i = 0; i < 2; i++) { // 建立代表哪一條線的標題,這裡是畫兩條 XYSeries series = new XYSeries("test" + (i + 1)); // 填充資料,一條標題10個點 for (int k = 0; k < 10; k++) { // 填x,y值 series.add(k, 20 + r.nextInt() % 100); } // 需要繪製的點放進dataset中 dataset.addSeries(series); } // 3, 對點的繪製進行設定 XYSeriesRenderer xyRenderer = new XYSeriesRenderer(); // 3.1設定顏色 xyRenderer.setColor(Color.BLUE); // 3.2設定點的樣式 xyRenderer.setPointStyle(PointStyle.SQUARE); // 3.3, 將要繪製的點添加到座標繪製中 renderer.addSeriesRenderer(xyRenderer); // 3.4,重複 1~3的步驟繪製第二個系列點 xyRenderer = new XYSeriesRenderer(); xyRenderer.setColor(Color.RED); xyRenderer.setPointStyle(PointStyle.CIRCLE); renderer.addSeriesRenderer(xyRenderer); // Intent intent = new LinChart().execute(this); // 開啟畫圖的Activity,需要在manifest中設定 <activity android:name="org.achartengine.GraphicalActivity" /> Intent intent = ChartFactory .getLineChartIntent(this, dataset, renderer); startActivity(intent); }}
柱狀圖:
// 柱狀圖 XYMultipleSeriesRenderer renderer = getBarDemoRenderer(); Intent intent = ChartFactory.getBarChartIntent(this, getBarDemoDataset(), renderer, Type.DEFAULT); startActivity(intent);//設定柱狀圖的Series private XYMultipleSeriesDataset getBarDemoDataset() { XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); final int nr = 10; Random r = new Random(); // 一共是3種不同的柱狀圖 for (int i = 0; i < SERIES_NR; i++) { CategorySeries series = new CategorySeries("Demo series " + (i + 1)); // 設定每個的高度 for (int k = 0; k < nr; k++) { series.add(100 + r.nextInt() % 100); } dataset.addSeries(series.toXYSeries()); } return dataset; } //設定柱狀圖的Renderer,設定顏色 public XYMultipleSeriesRenderer getBarDemoRenderer() { XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); SimpleSeriesRenderer r = new SimpleSeriesRenderer(); r.setColor(Color.BLUE); renderer.addSeriesRenderer(r); r = new SimpleSeriesRenderer(); r.setColor(Color.GREEN); renderer.addSeriesRenderer(r); r = new SimpleSeriesRenderer(); r.setColor(Color.WHITE); renderer.addSeriesRenderer(r); setChartSettings(renderer); return renderer; } //設定柱狀圖Renderer的屬性 private void setChartSettings(XYMultipleSeriesRenderer renderer) { renderer.setChartTitle("Chart demo"); renderer.setXTitle("x values"); renderer.setYTitle("y values"); renderer.setXAxisMin(0);// 設定X軸的最小值為0.5 renderer.setXAxisMax(10.5);// 設定X軸的最大值為10.5 renderer.setYAxisMin(0);// 設定Y軸的最小值為0 renderer.setYAxisMax(210);// 設定Y軸最大值為210 renderer.setDisplayChartValues(true); // 設定是否在柱體上方顯示值 renderer.setShowGrid(true);// 設定是否在圖表中顯示網格 renderer.setXLabels(0);// 設定X軸顯示的刻度標籤的個數 for (int i = 1; i < 11; i++) { // 設定x軸刻度的值 renderer.addTextLabel(i, "" + i); } }
餅狀圖:
// 餅狀圖 Intent intent = execute(MainActivity.this); startActivity(intent);//設定餅狀圖 public Intent execute(Context context) { double[] values = new double[] { 12, 14, 11, 10, 19 }; int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA, Color.YELLOW, Color.CYAN }; DefaultRenderer renderer = buildCategoryRenderer(colors); renderer.setZoomButtonsVisible(true); renderer.setZoomEnabled(true); // 設定餅狀圖的title字型大小 renderer.setChartTitleTextSize(20); // 設定餅狀圖的title renderer.setChartTitle("這是一個餅狀圖"); return ChartFactory.getPieChartIntent(context, buildCategoryDataset("Project budget", values), renderer, "Budget"); } //設定餅狀圖的Renderer protected DefaultRenderer buildCategoryRenderer(int[] colors) { DefaultRenderer renderer = new DefaultRenderer(); renderer.setLabelsTextSize(15); renderer.setLegendTextSize(15); renderer.setMargins(new int[] { 20, 30, 15, 0 }); // 設定顏色 for (int color : colors) { SimpleSeriesRenderer r = new SimpleSeriesRenderer(); r.setColor(color); renderer.addSeriesRenderer(r); } return renderer; } //設定餅狀圖的Series protected CategorySeries buildCategoryDataset(String title, double[] values) { CategorySeries series = new CategorySeries(title); int k = 0; // 設定每份的大小 for (double value : values) { series.add("Project " + ++k, value); } return series; }