柱形图 用的是AChartEngine
需要引用achartengine-1.0.0.jar包。下载地址:http://download.csdn.net/detail/yaohucaizi/5128672。具体代码如下:
public class XYMultipleActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xymultiple); //初始数据 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);//设置X轴显示的刻度标签的个数 renderer.setYLabels(10);//设置Y轴显示的刻度标签的个数 renderer.setXLabelsAlign(Align.LEFT);//设置刻度线与X轴之间的相对位置关系 renderer.setYLabelsAlign(Align.LEFT);//设置刻度线与Y轴之间的相对位置关系 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);//设置X轴名称 renderer.setYTitle(yTitle);//设置Y轴名称 renderer.setXAxisMin(xMin);//设置X轴的最小值 renderer.setXAxisMax(xMax);//设置X轴的最大值 renderer.setYAxisMin(yMin);//设置Y轴的最小值 renderer.setYAxisMax(yMax);//设置Y轴的最大值 renderer.setAxesColor(axesColor);//设置坐标轴颜色 renderer.setLabelsColor(labelsColor); } }
柱形图的主要风格设置:
1. 修改背景色或设置背景图片 背景色设置需要设置两项:setMarginsColor(设置四边颜色)以及setBackgroundColor(设置中间背景色) 设置背景图片: http://blog.csdn.net/kmyhy/article/details/6590294 2. setAxisTitleTextSize(16);// 设置坐标轴标题文本大小 3. setChartTitleTextSize(20); // 设置图表标题文本大小 4. setLabelsTextSize(15); // 设置轴标签文本大小 5. setLegendTextSize(15); // 设置图例文本大小 6. renderer.setChartTitle( "个人收支表");//设置柱图名称 7. renderer.setXTitle( "名单" );//设置X轴名称 8. renderer.setYTitle( "金额" );//设置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. Dataset和Render参数介绍: http://blog.csdn.net/lk_blog/article/details/7645661 26.ChartView.repaint();是重新绘图的命令 27.关于AChartEngine的点击事件,双击事件,滑动事件均可以用自定义事件解决,但是需要注意的是先设置renderer.setClickEnabled(false); 28.若是添加图形后变形,可以设置 renderer.setInScroll(true); 29.renderer.setGridColor();//设置网格颜色 30.renderer.setAxesColor();//设置坐标轴颜色
时间: 2024-08-26 11:15:47