zoukankan      html  css  js  c++  java
  • Android 柱形图

    柱形图 用的是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();//设置坐标轴颜色
  • 相关阅读:
    jenkins api
    打码兔官网 验证码识别 远程答题服务 代答平台 验证码识别软件下载
    WeUI首页、文档和下载
    CMDB, 配置管理数据库, ITIL
    OpenResty Con 2015
    Ngx_lua 最佳技术实践 | UPYUN技术现场
    兔大侠整理的MySQL-Python(MySQLdb)封装类
    58同城沈剑:好的架构源于不停地衍变,而非设计-CSDN.NET
    Lua包管理工具Luarocks详解
    zz
  • 原文地址:https://www.cnblogs.com/wei1228565493/p/4207712.html
Copyright © 2011-2022 走看看