1、stacked chart介紹
aChartEngine中的stacked Chart是柱狀圖,是數據顯示的一種。效果如圖:
兩個圖都是stacked chart,只是設置了不同的樣式(樣式已經提供好的)。
2、如何使用stacked chart。
stacked chart 的使用和pie chart的使用基本一樣。如果不清楚的話請參見pie chart一文:http://www.cnblogs.com/vanezkw/archive/2012/07/27/2611677.html。
3、demo。
package com.example.test; import java.util.ArrayList; import java.util.List; import org.achartengine.ChartFactory; import org.achartengine.chart.BarChart.Type; import org.achartengine.model.CategorySeries; import org.achartengine.model.XYMultipleSeriesDataset; import org.achartengine.renderer.SimpleSeriesRenderer; import org.achartengine.renderer.XYMultipleSeriesRenderer; import android.app.Activity; import android.graphics.Color; import android.graphics.Paint.Align; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] titles = new String[] { "2008", "2007" }; List<double[]> values = new ArrayList<double[]>(); values.add(new double[] { 14230, 12300, 14240, 15244, 15900, 19200, 22030, 21200, 19500, 15500, 12600, 14000 }); values.add(new double[] { 5230, 7300, 9240, 10540, 7900, 9200, 12030, 11200, 9500, 10500, 11600, 13500 }); int[] colors = new int[] { Color.BLUE, Color.CYAN }; XYMultipleSeriesRenderer renderer = buildBarRenderer(colors); setChartSettings(renderer, "Monthly sales in the last 2 years", "Month", "Units sold", 0.5, 12.5, 0, 24000, Color.GRAY, Color.LTGRAY); renderer.getSeriesRendererAt(0).setDisplayChartValues(true); renderer.getSeriesRendererAt(1).setDisplayChartValues(true); renderer.setXLabels(12); renderer.setYLabels(10); renderer.setXLabelsAlign(Align.LEFT); renderer.setYLabelsAlign(Align.LEFT); renderer.setPanEnabled(true, false); renderer.setZoomEnabled(false); renderer.setZoomRate(1.1f); renderer.setBarSpacing(0.5f); View view = ChartFactory.getBarChartView(this, buildBarDataset(titles, values), renderer, Type.DEFAULT); //Type.STACKED view.setBackgroundColor(Color.BLACK); setContentView(view); } protected XYMultipleSeriesDataset buildBarDataset(String[] titles, List<double[]> values) { XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); int length = titles.length; for (int i = 0; i < length; i++) { CategorySeries series = new CategorySeries(titles[i]); double[] v = values.get(i); int seriesLength = v.length; for (int k = 0; k < seriesLength; k++) { series.add(v[k]); } dataset.addSeries(series.toXYSeries()); } return dataset; } protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) { XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); renderer.setAxisTitleTextSize(16); renderer.setChartTitleTextSize(20); renderer.setLabelsTextSize(15); renderer.setLegendTextSize(15); int length = colors.length; for (int i = 0; i < length; i++) { SimpleSeriesRenderer r = new SimpleSeriesRenderer(); r.setColor(colors[i]); renderer.addSeriesRenderer(r); } return renderer; } protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle, String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor, int labelsColor) { renderer.setChartTitle(title); renderer.setXTitle(xTitle); renderer.setYTitle(yTitle); renderer.setXAxisMin(xMin); renderer.setXAxisMax(xMax); renderer.setYAxisMin(yMin); renderer.setYAxisMax(yMax); renderer.setAxesColor(axesColor); renderer.setLabelsColor(labelsColor); } }
4、分析demo。
①設置兩組需要顯示的數據(當然你可以寫多組數據)。
②設置renderer的一些樣式。當然這里的樣式設置比pie chart的設置要復雜一些,除了設置數據本身的樣式意外還需要對坐標軸也做設置(當然不設置就是默認的樣式)。具體renderer樣式的設置這里就不做過多的介紹了,在官方文檔中都是有的,或者google一些很多解釋。
5、總結。
stacked Chart 比pie chart稍微復雜一點:①可以包括多組數據;②renderer要設置要復雜點。
stacked Chart需要的dataset中需要一組或多組數據。總的來說根據demo來理解還是很容易的。
歡迎交流。期待你的寶貴意見。