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

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

温馨提示:本期没有跟着官方文档来写,纯靠自己学习过程中所学习的方法,个人觉得使用起来比官方文档的要更加简洁
上一篇:MPAndroidChart的详细使用——坐标轴(X轴、Y轴、零线)
下一篇:MPAndroidChart的详细使用——ValueFormatter和AxisValueFormatter接口

折线图(多条数据)
//首先实例化一个 List  用来储存你的数据
List<Entry>list=new ArrayList<>();          
List<Entry>list2=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排序

List<Entry>list=new ArrayList<>();
Collections.sort(list, new EntryXComparator());
条形图

条形图和折线图设置数据的形式几乎一样,只是实例化List时是BarEntry而不是Entry,并且条形图有多种类型

//注意<>中间是BarEntry,这是和折线图不同的
List<BarEntry>list=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轴与所有条形适配,防止两侧的柱子显示不全
条形图组
List<BarEntry>list=new ArrayList<>();
List<BarEntry>list2=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

List<BarEntry>list=new ArrayList<>();
list.add(new BarEntry(1,new float[]{10,20,30}));
饼图

饼图数据和其他图表有点不一样,第一个参数即是当前所占区域的大小数据,第二个参数用于描述当前区域的信息,饼图没有X轴,数据的显示顺序由添加顺序来决定

List<PieEntry> 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);  //折线的颜色

List<Integer>list_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});
发布了23 篇原创文章 · 获赞 59 · 访问量 8546

猜你喜欢

转载自blog.csdn.net/qq_44720366/article/details/104734117