MPAndroidChart的详细使用——设置数据

Adelaide ·
更新时间:2024-11-15
· 548 次阅读

本期是讲如何为图表添加数据

温馨提示:本期没有跟着官方文档来写,纯靠自己学习过程中所学习的方法,个人觉得使用起来比官方文档的要更加简洁
上一篇: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});
作者:Android_YU



mpandroidchart 数据

需要 登录 后方可回复, 如果你还没有账号请 注册新账号