achartengine多柱狀圖(自定義X軸顯示參數)

使用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);//設置是否可以被點擊

發佈了134 篇原創文章 · 獲贊 173 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章