zoukankan      html  css  js  c++  java
  • Android报表库aChartEngine系列(stacked chart)

    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来理解还是很容易的。

    欢迎交流。期待你的宝贵意见。

  • 相关阅读:
    uniapp路由插件使用爬坑
    uniapp原生插件开发及打包发布
    JAVA视频教程、安卓Android视频教程、IOS视频教程、Spring Boot/Spring Cloud学习视频教程、MySql视频教程、Redis、大数据、分布式,性能优化等视频教程下载,不断更新中
    css 图片/元素旋转代码
    常见的数据结构
    golang性能优化
    centos配置多个网卡地址
    centos升级python后,要修改的文件
    姿态估计-openpiapaf
    Taro实现VirtualList虚拟列表
  • 原文地址:https://www.cnblogs.com/vanezkw/p/2614794.html
Copyright © 2011-2022 走看看