温馨提示:本期没有跟着官方文档来写,纯靠自己学习过程中所学习的方法,个人觉得使用起来比官方文档的要更加简洁
上一篇:MPAndroidChart的详细使用——坐标轴(X轴、Y轴、零线)
下一篇:MPAndroidChart的详细使用——ValueFormatter和AxisValueFormatter接口
//首先实例化一个 List 用来储存你的数据
Listlist=new ArrayList();
Listlist2=new ArrayList(); //第二条线
//然后向List中添加数据
//其中两个参数对应的分别是 X轴 Y轴
list.add(new Entry(1,10));
list.add(new Entry(2,12));
list.add(new Entry(3,6));
//为第二条线添加数据
list2.add(new Entry(1,8));
list2.add(new Entry(2,10));
list2.add(new Entry(3,7));
//然后创建一个DataSet对象
//list是你这条线的数据 "语文" 是你对这条线的描述
LineDataSet lineDataSet=new LineDataSet(list,"语文");
//再创建一个DataSet对象,把第二条数据添加进DataSet对象
LineDataSet lineDataSet2=new LineDataSet(list2,"数学");
//创建Data对象
LineData lineData=new LineData(lineDataSet);//把第一个DataSet对象添加到Data
lineData.addDataSet(lineDataSet2); //第二个
line.setData(lineData); //setData()方法把Data传入
条目顺序
如果X轴没有正确的数据顺序,那么可能会造成一些错误,可以使用Collections.sort排序
Listlist=new ArrayList();
Collections.sort(list, new EntryXComparator());
条形图
条形图和折线图设置数据的形式几乎一样,只是实例化List时是BarEntry而不是Entry,并且条形图有多种类型
//注意中间是BarEntry,这是和折线图不同的
Listlist=new ArrayList();
//添加数据
list.add(new BarEntry(1,7)); //其中两个数字对应的分别是 X轴 Y轴
list.add(new BarEntry(2,10));
list.add(new BarEntry(3,12));
list.add(new BarEntry(4,6));
list.add(new BarEntry(5,3));
BarDataSet barDataSet=new BarDataSet(list,"语文"); //list是你这条线的数据 "语文" 是你对这条线的描述
BarData barData=new BarData(barDataSet);
bar.setData(barData);
data.setBarWidth(0.9f); //设置柱子的宽度
chart.setFitBars(true); //使X轴与所有条形适配,防止两侧的柱子显示不全
条形图组
Listlist=new ArrayList();
Listlist2=new ArrayList();
//为第一组添加数据
list.add(new BarEntry(1,5));
list.add(new BarEntry(2,8));
list.add(new BarEntry(3,4));
//为第二组添加数据
list2.add(new BarEntry(1,6));
list2.add(new BarEntry(2,8));
list2.add(new BarEntry(3,5));
BarDataSet barDataSet=new BarDataSet(list,"男");
barDataSet.setColor(Color.RED); //为第一组柱子设置颜色
BarDataSet barDataSet2=new BarDataSet(list2,"女");
barDataSet2.setColor(Color.BLUE); //为第二组柱子设置颜色
BarData barData=new BarData(barDataSet); //加上第一组
barData.addDataSet(barDataSet2); //加上第二组 (多组也可以用同样的方法)
barchart.setData(barData);
float groupSpace = 0.06f; //群组间的间隔
float barSpace = 0.02f; // 每一个柱状条间隔 计算时需要 *DataSet的数量 这里是2
float barWidth = 0.45f; // 每一个柱状条的宽度 计算时需要 *DataSet的数量 这里是2
// (0.02 + 0.45) * 2 + 0.06 = 1.00 保证最后总和是1就行
//重点:
barData.setBarWidth(barWidth);//柱子的宽度
//三个参数 分别代表 X轴起点 组与组之间的间隔 组内柱子的间隔
barData.groupBars(1f,groupSpace,barSpace);
XAxis xAxis = chart.getXAxis();
xAxis.setCenterAxisLabels(true);//此方法可以让X轴标签数据显示在图组的中心
堆叠条形图
这个和普通的条形图差不多,区别就在于添加数据的时候填入参数的类型不同
普通BarChart是两个单纯的float参数,而叠装图是,Y轴数据的地方填入的是一个float数组
这样在图表上显示高度为10,20,30的三段数据,总高度是60
Listlist=new ArrayList();
list.add(new BarEntry(1,new float[]{10,20,30}));
饼图
饼图数据和其他图表有点不一样,第一个参数即是当前所占区域的大小数据,第二个参数用于描述当前区域的信息,饼图没有X轴,数据的显示顺序由添加顺序来决定
List list= new ArrayList();
list.add(new PieEntry(20, "软件设计"));
list.add(new PieEntry(30, "英语"));
list.add(new PieEntry(35, "数学"));
list.add(new PieEntry(15, "语文"));
PieDataSet pieDataSet= new PieDataSet(list, "饼图");
PieData pieData = new PieData(pieDataSet);
pieChart.setData(pieData );
数据(DataSet)设置颜色
可以通过对两组设置颜色的方法,使得便于区分两组数据
setColor(int color) | 设置单一的颜色,在内部还是创建数组并添加这个颜色 |
---|---|
setColors(ArrayList colors) | 提供List类型的颜色集合 |
setColors(int [] colors) | 通过使用 new Int[]{R.color.red,…}的形式给dataset提供颜色数据 |
示例代码:
lineDataSet.setColor(Color.GREEN); //折线的颜色
Listlist_color=new ArrayList();
list_color.add(Color.RED);
list_color.add(Color.YELLOW);
list_color.add(Color.BLUE);
lineDataSet.setColors(list_color);
lineDataSet.setColors(new int[]{Color.RED,Color.BLUE,Color.YELLOW});