
Android Studio 添加MPAndroidChart依赖,build.gradle(Project)下的allprojects->repositories下:
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
}
}
build.gradle(Module)下添加dependencies:
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
折线图(LineChart)涉及到的类
LineChart(折线图本身)、Legend(图例)、XAxis(X轴)、YAxis(包括左Y轴与右Y轴)、Entry(数据类)、LineDataSet(数据集,其本身在折线图上就是一条折线)、LineData(线类)。好了创建折线图的基本流程就是将要显示的数据赋值给Entry(数据类),当然数据是一组的所以用List<Entry>,之后再将List<Entry>给LineDataSet,LineDataSet再给LineData,最后再lineChart.setData(lineData)就行了。
我们先看看简单的hello world级别效果怎么写
//无数据时显示
lineChart.setNoDataText("没有获取到数据哦~");
lineChart.setNoDataTextColor(Color.parseColor("#00bcef"));
//初始化显示数据
List<Float> floats = new ArrayList<>();
floats.add(0.5f);
floats.add(3f);
floats.add(1f);
floats.add(0.1f);
List<Entry> entries = new ArrayList<>();
for (int i = 0;i<floats.size();i++){
entries.add(new Entry(i,floats.get(i)));
}
//将数据赋给数据集,一个数据集表示一条线
LineDataSet lineDataSet = new LineDataSet(entries,"");
LineData lineData = new LineData(lineDataSet);
//不显示曲线点的具体数值
lineData.setDrawValues(false);
lineChart.setData(lineData);
效果是这样的:

别急,我们来优化一下,按着第一张效果图来,先把不需要显示的都给它去了,这表格线就不要了,显示的数据也不要了,下面那个颜色方块也去了,Description Label什么鬼,也不要了
//无数据时显示
lineChart.setNoDataText("没有获取到数据哦~");
lineChart.setNoDataTextColor(Color.parseColor("#00bcef"));
//取消缩放
lineChart.setScaleEnabled(false);
//不显示高亮
lineChart.setHighlightPerTapEnabled(false);
//不显示description
lineChart.getDescription().setEnabled(false);
//不显示边界
lineChart.setDrawBorders(false);
//不显示图例
lineChart.getLegend().setEnabled(false);
lineChart.setHighlightPerDragEnabled(false);
lineChart.setExtraBottomOffset(10f);
//获取X轴
XAxis xAxis = lineChart.getXAxis();
//给X轴添加标签
xAxis.setValueFormatter(new IndexAxisValueFormatter(new String[]{"清醒","浅睡","深睡","离床"}));
xAxis.setDrawGridLines(false);
xAxis.setDrawAxisLine(false);
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setTextSize(12f);
YAxis leftYAxis = lineChart.getAxisLeft();
leftYAxis.setAxisMinimum(0);
leftYAxis.setEnabled(false);
YAxis rightYAxis = lineChart.getAxisRight();
rightYAxis.setEnabled(false);
//初始化显示数据
List<Float> floats = new ArrayList<>();
floats.add(0.5f);
floats.add(3f);
floats.add(1f);
floats.add(0.1f);
List<Entry> entries = new ArrayList<>();
for (int i = 0;i<floats.size();i++){
entries.add(new Entry(i,floats.get(i)));
}
//将数据赋给数据集,一个数据集表示一条线
LineDataSet lineDataSet = new LineDataSet(entries,"");
LineData lineData = new LineData(lineDataSet);
//不显示曲线点的具体数值
lineData.setDrawValues(false);
lineChart.setData(lineData);
看看效果:

接下来就是颜色填充以及平滑曲线效果啦
//无数据时显示
lineChart.setNoDataText("没有获取到数据哦~");
lineChart.setNoDataTextColor(Color.parseColor("#00bcef"));
//取消缩放
lineChart.setScaleEnabled(false);
//不显示高亮
lineChart.setHighlightPerTapEnabled(false);
//不显示description
lineChart.getDescription().setEnabled(false);
//不显示边界
lineChart.setDrawBorders(false);
//不显示图例
lineChart.getLegend().setEnabled(false);
lineChart.setHighlightPerDragEnabled(false);
lineChart.setExtraBottomOffset(10f);
//获取X轴
XAxis xAxis = lineChart.getXAxis();
xAxis.setValueFormatter(new IndexAxisValueFormatter(new String[]{"清醒","浅睡","深睡","离床"}));
xAxis.setDrawGridLines(false);
xAxis.setDrawAxisLine(false);
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setTextSize(12f);
YAxis leftYAxis = lineChart.getAxisLeft();
leftYAxis.setAxisMinimum(0);
leftYAxis.setEnabled(false);
YAxis rightYAxis = lineChart.getAxisRight();
rightYAxis.setEnabled(false);
//初始化显示数据
List<Float> floats = new ArrayList<>();
floats.add(0.5f);
floats.add(3f);
floats.add(1f);
floats.add(0.1f);
List<Entry> entries = new ArrayList<>();
for (int i = 0;i<floats.size();i++){
entries.add(new Entry(i,floats.get(i)));
}
//将数据赋给数据集,一个数据集表示一条线
LineDataSet lineDataSet = new LineDataSet(entries,"");
//线颜色
lineDataSet.setColor(Color.parseColor("#FFA2A2"));
//线宽度
lineDataSet.setLineWidth(1.0f);
//显示圆点
lineDataSet.setDrawCircles(true);
//设置圆点颜色(外圈)
lineDataSet.setCircleColor(Color.parseColor("#008CFF"));
//设置圆点填充颜色
lineDataSet.setCircleHoleColor(Color.parseColor("#008CFF"));
//设置线条为平滑曲线
lineDataSet.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);
//设置直线图填充
lineDataSet.setDrawFilled(true);
//设置填充颜色
lineDataSet.setFillColor(Color.parseColor("#FFA2A2"));
LineData lineData = new LineData(lineDataSet);
//不显示曲线点的具体数值
lineData.setDrawValues(false);
lineChart.setData(lineData);
OK,hello world pro效果就出现了

结语
以上就是MPAndroidChart中的LineChart(折线图)的简单pro使用,下一篇介绍一下BarChart(柱状图的使用)
