使用achartengine繪製多狀圖,界面效果如下:
achartengine1.0.0到1.2.0jar包下載:點擊打開鏈接
關鍵代碼:(導入jar後,拷貝可用)
//柱狀圖的多個序列的名字
String[] titles = new String[] { "金額", "遊戲收入","其他" };
//存放柱狀圖多個序列的值
ArrayList<double[]> value = new ArrayList<double[]>();
double[] d1 = new double[] {0,55,15, 30, 25, 12,0 };
double[] d2 = new double[] {0,35,42, 12, 1, 35,0 };
double[] d3 = new double[] {0,22,54, 41, 12, 25,0 };
value.add(d1);
value.add(d2);
value.add(d3);
//int maxVal1 = ChartUtil.getMaxVal(d1);
//int maxVal2 = ChartUtil.getMaxVal(d2);
//多個狀的顏色
int[] colors = { R.color.color_reseda, R.color.color_orange2,R.color.color_blue};
//設置x軸和y軸的最大最小值
//double[] val = new double[] { 1,
// 7, 0, maxVal1 > maxVal2 ?maxVal1:maxVal2};
int[] xVal = new int[] {1, 2, 3,4,5,6,7};
//自定義X軸顯示的數據
String[] xLableVal = new String[]{"","取款","存款","彩票","體育","真人",""};
//生成柱狀圖view
GraphicalView mGraphicalView = ChartUtil.xychar(titles, value, colors, xLableVal, 5, val, xVal, "", true);
//將生成的mGraphicalView添加到你需要顯示的佈局裏面去
mLayoutChart.addView(mGraphicalView);
//調用方法
public static GraphicalView xychar(String[] titles, ArrayList<double[]> value,
int[] colors, String[] xlableVal, int y,double[] range, int []xLable ,String xtitle, boolean f) {
//多個渲染
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
//佈局的(上左下右)margin
renderer.setMargins(new int[] { 10, 35,20,25 });
//多個序列的數據集
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
//構建數據集以及渲染
for (int i = 0; i < titles.length; i++) {
XYSeries series = new XYSeries(titles[i]);
double [] yLable= value.get(i);
for (int j=0;j< yLable.length;j++) {
series.add(xLable[j],yLable[j]);
}
dataset.addSeries(series);
XYSeriesRenderer xyRenderer = new XYSeriesRenderer();
// 設置顏色
xyRenderer.setColor(MyApplication.getCurrentActivity().getResources().getColor(colors[i]));
// 設置點的樣式 //
xyRenderer.setPointStyle(PointStyle.SQUARE);
// 將要繪製的點添加到座標繪製中
renderer.addSeriesRenderer(xyRenderer);
}
//在X軸顯示自定義的標籤,那麼首先要設置renderer.setXLabels(0);其次我們要renderer.addXTextLabel循環添加
//設置x軸標籤數
renderer.clearXTextLabels();
for (int i = 0; i < xlableVal.length; i++) {
renderer.addXTextLabel(i+1, xlableVal[i]);;
}
renderer.setXLabels(0);
//設置Y軸標籤數
renderer.setYLabels(y);
//設置x軸的最大值
// renderer.setXAxisMax(x - 0.5);
//設置軸的顏色
renderer.setAxesColor(Color.BLACK);
//設置x軸和y軸的標籤對齊方式
renderer.setXLabelsAlign(Align.CENTER);
renderer.setYLabelsAlign(Align.RIGHT);
// 設置現實網格
renderer.setShowGrid(true);
renderer.setYTitle("金額(千元)");
renderer.setShowAxes(true);
// 設置條形圖之間的距離
renderer.setBarSpacing(0.2);
renderer.setInScroll(false);
renderer.setPanEnabled(false, false);
renderer.setClickEnabled(false);
//設置x軸和y軸標籤的顏色
renderer.setXLabelsColor(R.color.color_gray);
renderer.setYLabelsColor(0,R.color.color_gray);
int length = renderer.getSeriesRendererCount();
//設置圖標的標題
renderer.setChartTitle(xtitle);
renderer.setChartTitleTextSize(15);
renderer.setLabelsColor(R.color.color_gray);
//設置圖例的字體大小
renderer.setLegendTextSize(15);
renderer.setLabelsTextSize(12);
renderer.setShowLegend(true);
// 設置圖例文本大小
renderer.setLegendHeight(40);
// 設置座標軸標籤字體大小
renderer.setAxisTitleTextSize(12);
//設置x軸和y軸的最大最小值
renderer.setMarginsColor(0x00888888);
GraphicalView mChartView = ChartFactory.getBarChartView(MyApplication.getCurrentActivity(),
dataset, renderer, Type.DEFAULT);
return mChartView;
}
1. 修改背景色或設置背景圖片
背景色設置需要設置兩項:setMarginsColor(設置四邊顏色)以及setBackgroundColor(設置中間背景色)
2. setAxisTitleTextSize(16);// 設置座標軸標題文本大小
3. setChartTitleTextSize(20); // 設置圖表標題文本大小
4. setLabelsTextSize(15); // 設置軸標籤文本大小
5. setLegendTextSize(15); // 設置圖例文本大小
6. renderer.setChartTitle( "設置柱圖名稱");//設置柱圖名稱
7. renderer.setXTitle( "XX" );//設置X軸名稱
8. renderer.setYTitle( "YY" );//設置Y軸名稱
9. renderer.setXAxisMin(0.5);//設置X軸的最小值爲0.5
10. renderer.setXAxisMax(5.5);//設置X軸的最大值爲5
11. renderer.setYAxisMin(0);//設置Y軸的最小值爲0
12. renderer.setYAxisMax(500);//設置Y軸最大值爲500
13. renderer.setDisplayChartValues(true);//設置是否在柱體上方顯示值
14. renderer.setShowGrid(true);//設置是否在圖表中顯示網格
15. renderer.setXLabels(0);//設置X軸顯示的刻度標籤的個數
16. 如果想要在X軸顯示自定義的標籤,那麼首先要設置renderer.setXLabels(0);其次我們要renderer.addTextLabel()循環添加
17. renderer.setXLabelsAlign(Align.RIGHT);//設置刻度線與X軸之間的相對位置關係
18. renderer.setYLabelsAlign(Align.RIGHT);//設置刻度線與Y軸之間的相對位置關係
19. renderer.setZoomButtonsVisible(true);//設置可以縮放
20. renderer.setPanLimits(newdouble[] { 0, 20, 0, 140 });//設置拉動的範圍
21. renderer.setZoomLimits(newdouble[] { 0.5, 20, 1, 150 });//設置縮放的範圍
22. renderer.setRange(newdouble[]{0d, 5d, 0d, 100d}); //設置chart的視圖範圍
23. renderer.setFitLegend(true);// 設置是否顯示圖例
24. renderer.setClickEnabled(true)//設置是否可以滑動及放大縮小;
25.ChartView.repaint();重新繪圖
26.關於AChartEngine的點擊事件,雙擊事件,滑動事件均可以用自定義事件解決,但是需要注意的是先設置renderer.setClickEnabled(false);
27.若是添加圖形後變形,可以設置 renderer.setInScroll(true);
28.renderer.setGridColor();//設置網格顏色
29.renderer.setAxesColor();//設置座標軸顏色
30.Renderer.setShowLegend(true); //顯示底部說明
31.Renderer.setShowLabels(false); //不顯示標籤
32.renderer.setLegendTextSize(20);//設置左下角表注的文字大小
33.renderer.setZoomButtonsVisible(true);//設置顯示放大縮小按鈕
34.renderer.setZoomEnabled(false);//設置不允許放大縮小.
35.renderer.setChartTitleTextSize(30);//設置圖表標題的文字大小
36.renderer.setChartTitle("統計結果");//設置圖表的標題 默認是居中頂部顯示
37.renderer.setLabelsTextSize(20);//餅圖上標記文字的字體大小
38.renderer.setLabelsColor(Color.WHITE);//餅圖上標記文字的顏色
39.renderer.setPanEnabled(false);//設置是否可以平移
40.renderer.setDisplayValues(true);//是否顯示值
41.renderer.setClickEnabled(true);//設置是否可以被點擊