安卓系列之第三方库 MPAndroidChart 之 LineChart 基础篇

6,485 阅读6分钟

MPAndroidChart 在 GitHub 上具有很高的 star,我们也经常在项目中遇到绘制图表的场景,此篇对 LineChart 的属性,功能等进行总结。

源代码项目地址

github.com/PhilJay/MPA…

引入方式

当前最新版本为 3.1.0

repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
}

LineChart 组件

在 xml 文件中,引用 LineChart 组件。

<com.github.mikephil.charting.charts.LineChart
        android:id="@+id/chart"
        android:layout_width="match_parent"
        android:layout_height="500dp"/>

属性

Chart(图表)属性

属性方法功能
setBackgroundColor()背景色
setBackgroundResource()背景资源
setTouchEnabled()手指点击是否可以选中点
setDrawGridBackground()是否绘制网格背景
setGridBackgroundColor()绘制网格背景颜色
setViewPortOffsets()曲线内容的位置偏移量
resetViewPortOffsets()曲线内容的位置偏移量重置
setAutoScaleMinMaxEnabled()是否可以根据最大值和最小值自动缩放
setDragEnabled()是否可以拖拽
setDragXEnabled()X 轴是否可以拖拽
setDragYEnabled()Y 轴是否可以拖拽
setDragOffsetX()拖拽曲线的 X 轴偏移量
setDragOffsetY()拖拽曲线的 Y 轴偏移量
setScaleEnabled()是否可以缩放
setScaleMinima()设置缩放最小倍数
setScaleXEnabled()是否可以 X 轴缩放
setScaleYEnabled()是否可以 Y 轴缩放
setPinchZoom()是否可以双指缩放
setDoubleTapToZoomEnabled()是否可以双击放大
setOnChartValueSelectedListener()选中点(数据)的监听事件
setData()数据添加到图表中
moveViewToX()移动到指定 X 轴的位置
moveViewTo()移动到指定点的位置
moveViewToAnimated()移动到指定点的位置
highlightValue()高亮值
notifyDataSetChanged()刷新数据
invalidate()重绘
//--------Chart(图表)---------//

//背景色--透明
chart.setBackgroundColor(Color.TRANSPARENT);
//背景--color或者shape都可以
chart.setBackgroundResource(R.drawable.shape_gradient_fff5ee_e6e6fa);

//手指点击是否可以选中点--可以
chart.setTouchEnabled(true);

//是否绘制网格背景--是
chart.setDrawGridBackground(true);
//绘制网格背景颜色--透明淡紫色
chart.setGridBackgroundColor(Color.parseColor("#509370DB"));

//曲线内容的位置偏移量--左50,顶50,右50,底50
chart.setViewPortOffsets(50f, 50f, 50f, 50f);
//曲线内容的位置偏移量重置
chart.resetViewPortOffsets();

//是否可以根据最大值和最小值自动缩放--是
chart.setAutoScaleMinMaxEnabled(true);

//是否可以拖拽--是
chart.setDragEnabled(true);
//X轴是否可以拖动--是
chart.setDragXEnabled(true);
//Y轴是否可以拖动--是
chart.setDragYEnabled(true);

//拖拽曲线的X轴偏移量--100f
chart.setDragOffsetX(100f);
//拖拽曲线的Y轴偏移量--20f
chart.setDragOffsetY(20f);

//是否可以缩放--否
chart.setScaleEnabled(false);
//设置缩放最小倍数--X轴1f,Y轴1f
chart.setScaleMinima(1f,1f);

//是否可以X轴缩放--是
chart.setScaleXEnabled(true);

//是否可以Y轴缩放--否
chart.setScaleYEnabled(false);

//是否可以双指缩放--是
chart.setPinchZoom(true);
//是否可以双击放大--是
chart.setDoubleTapToZoomEnabled(true);

//选中点(数据)的监听事件
chart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
    @Override
    public void onValueSelected(Entry e, Highlight h) {

    }

    @Override
    public void onNothingSelected() {

    }
});

//数据添加到图表中
chart.setData(data);

//移动到指定X轴的位置--最右侧
chart.moveViewToX(values.get(values.size() - 1).getX());

//移动到指定点的位置--最右侧
chart.moveViewTo(values.get(values.size() - 1).getX(), values.get(values.size() - 1).getY(), YAxis.AxisDependency.RIGHT);

//移动到指定点的位置--最右侧,5000移动时间
chart.moveViewToAnimated(entryList.get(entryList.size() - 1).getX(), entryList.get(entryList.size() - 1).getY(), YAxis.AxisDependency.RIGHT,5000);


//高亮值--最后的值--x,y,dataSetIndex
chart.highlightValue(new Highlight(values.get(values.size() - 1).getX(), values.get(values.size() - 1).getY(), 0));

//刷新数据,告诉图表我的data变了
chart.notifyDataSetChanged();

//重绘
chart.invalidate();

Description (文本描述)属性

属性方法功能
setEnabled()是否显示
setText()描述内容
setPosition()位置
setTextSize()字体大小
setTextColor()字体颜色
setTypeface()字重
setTextAlign()内容位置
setXOffset()左右的偏移量
setYOffset()上下的偏移量
//--------Description(文本描述)---------//
Description description = chart.getDescription();

//是否显示--否
description.setEnabled(false);
//描述内容
description.setText("描述内容");
//位置(从图表左上角开始算)--150f,40f
description.setPosition(150f,40f);
//字体大小--12
description.setTextSize(12);
//字体颜色--紫色
description.setTextColor(Color.parseColor("#8A2BE2"));
//字重--加粗
description.setTypeface(Typeface.DEFAULT_BOLD);
//内容位置(position的左边,右边,居中)--右边
description.setTextAlign(Paint.Align.RIGHT);
//左右的偏移量---12f
description.setXOffset(-12f);
//上下的偏移量---13f
description.setYOffset(-13f);

ViewPortHandler(可视区域)属性

属性方法功能
getMatrixTouch().postScale()XY 轴缩放
setMaximumScaleX()X 轴最大能放大到几倍
setMinimumScaleX()X 轴最小能缩小到几倍
setMaximumScaleY()Y 轴最大能放大到几倍
setMinimumScaleY()Y 轴最小能缩小到几倍
setMinMaxScaleX()X 轴放大缩小倍数
setMinMaxScaleY()Y 轴放大缩小倍数
setDragOffsetX()拖拽曲线的 X 轴偏移量
setDragOffsetY()拖拽曲线的 Y 轴偏移量
//--------ViewPortHandler(可视区域)---------//
ViewPortHandler viewPortHandler = chart.getViewPortHandler();

//XY轴缩放--x轴3倍,y轴1倍
viewPortHandler.getMatrixTouch().postScale(3f, 1f);

//X轴最大能放大到几倍--10倍
viewPortHandler.setMaximumScaleX(10f);
//X轴最小能缩小到几倍--2倍
viewPortHandler.setMinimumScaleX(2f);
//Y轴最大能放大到几倍--5倍
viewPortHandler.setMaximumScaleY(5f);
//Y轴最小能缩小到几倍--2倍
viewPortHandler.setMinimumScaleY(2f);
//X轴放大缩小倍数
viewPortHandler.setMinMaxScaleX(2,10);
//Y轴放大缩小倍数
viewPortHandler.setMinMaxScaleY(2,5);

//拖拽曲线的X轴偏移量--100f
viewPortHandler.setDragOffsetX(100f);
//拖拽曲线的Y轴偏移量--50f
viewPortHandler.setDragOffsetY(50f);

Legend(标志)属性

属性方法功能
setEnabled()是否显示
setDirection()方块在文字的位置
setTextSize()文字大小
setTextColor()文字颜色
setTypeface()文字字重
setForm()标志形状
setFormSize()标志大小
setFormToTextSpace()标志与文字间距
setFormLineWidth()线宽
setFormLineDashEffect()标志虚线
setOrientation()标志排序
setVerticalAlignment()竖排位置
setHorizontalAlignment()横排位置
setWordWrapEnabled()是否允许换行
setMaxSizePercent()整个图表视图中的最大相对大小
setXOffset()左右的偏移量
setYOffset()上下的偏移量
setCustom()自定义标志
//--------Legend(标志)---------//
Legend legend = chart.getLegend();

//是否显示--是
legend.setEnabled(true);
//标志在文字的位置--左侧
legend.setDirection(Legend.LegendDirection.LEFT_TO_RIGHT);
//文字大小--11
legend.setTextSize(11);
//文字颜色--黑色
legend.setTextColor(Color.BLACK);
//文字字重--细线
legend.setTypeface(Typeface.SERIF);

//标志形状(线型,圆形,方块,空)--线型
legend.setForm(Legend.LegendForm.LINE);
//标志大小--11
legend.setFormSize(11);
//标志与文字间距--5
legend.setFormToTextSpace(5);
//线宽--1
legend.setFormLineWidth(1);
//标志虚线--2,3,1
legend.setFormLineDashEffect(new DashPathEffect(new float[]{23}, 1));

//标志排序(横竖排)--竖排
legend.setOrientation(Legend.LegendOrientation.VERTICAL);
//竖排位置(TOP(左上角),BOTTOM(左下角),CENTER(左中间)结合Legend.LegendOrientation.VERTICAL使用)--TOP(左上角)
legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
//横排位置(LEFT(左下角),RIGHT(左下角),CENTER(底中间)结合Legend.LegendOrientation.VERTICAL使用)--LEFT(左下角)
legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
//是否允许换行--是
legend.setWordWrapEnabled(true);

//整个图表视图中的最大相对大小--0.5
legend.setMaxSizePercent(0.5f);

//左右的偏移量--5
legend.setXOffset(5);
//上下的偏移量--5
legend.setYOffset(5);

//自定义标志
List<LegendEntry> legends = new ArrayList<>();
LegendEntry entry = new LegendEntry();
entry.label = "标志1";
entry.formColor = R.color.purple_200;
legends.add(entry);
legend.setCustom(legends);

XAxis(X 轴)属性

属性方法功能
setEnabled()是否显示
setDrawGridLines()网格线是否绘制
enableGridDashedLine()网格线虚线
setGridDashedLine()网格线虚线
setGridColor()网格线颜色
setGridLineWidth()网格线线宽
setDrawGridLinesBehindData()网格线是否在数据后面绘制
setDrawAxisLine()是否绘制 X 轴线
setAxisLineColor()X 轴线的颜色
setAxisLineDashedLine()X 轴线为虚线
enableAxisLineDashedLine()X 轴线为虚线
setAxisLineWidth()X 轴线的线宽
setDrawLabels()是否绘制内容
setLabelRotationAngle()设置内容的角度
setCenterAxisLabels()内容是否居中
setLabelCount()设置内容显示多少个
setTextColor()字体颜色
setTextSize()字体大小
setTypeface()字体字重
setGranularityEnabled()是否启用放大后的间隔控制
setGranularity()放大后间隔
setPosition()X 轴内容的位置
setYOffset()上下的偏移量
setXOffset()左右的偏移量
setAxisMinimum()X 轴最小值
setAxisMaximum()X 轴最大值
setAvoidFirstLastClipping()是否避免第一个和最后一个数据不显示
setDrawLimitLinesBehindData()限制线是否绘制在数据后面
setValueFormatter()值格式化
addLimitLine()增加限制线
removeAllLimitLines()X 轴移除所有限制线
removeLimitLine()指定移除某条限制线
//--------XAxis(X轴)---------//
XAxis xAxis = chart.getXAxis();

//是否显示--是
xAxis.setEnabled(true);

//网格线是否绘制--是
xAxis.setDrawGridLines(true);
//网格线虚线--线长10,间隔10,阶0
xAxis.enableGridDashedLine(10f, 10f, 0f);
xAxis.setGridDashedLine(new DashPathEffect(new float[]{10,10},0));
//网格线颜色--#AB82FF
xAxis.setGridColor(Color.parseColor("#AB82FF"));
//网格线线宽--1
xAxis.setGridLineWidth(1);
//网格线是否在数据后面绘制--是
xAxis.setDrawGridLinesBehindData(true);

//是否绘制X轴线--是
xAxis.setDrawAxisLine(true);
//X轴线的颜色--#7D26CD
xAxis.setAxisLineColor(Color.parseColor("#7D26CD"));
//X轴线为虚线--线长8,间隔5,阶0
xAxis.setAxisLineDashedLine(new DashPathEffect(new float[]{8f, 5f}, 0f));
xAxis.enableAxisLineDashedLine(850);
//X轴线的线宽--2
xAxis.setAxisLineWidth(2);

//是否绘制内容--是
xAxis.setDrawLabels(true);
//设置内容的角度--45
xAxis.setLabelRotationAngle(45);
//内容是否居中--否
xAxis.setCenterAxisLabels(false);
//设置内容显示多少个--5
xAxis.setLabelCount(5);

//字体颜色--#AB82FF
xAxis.setTextColor(Color.parseColor("#AB82FF"));
//字体大小--11
xAxis.setTextSize(11);
//字体字重--加粗
xAxis.setTypeface(Typeface.DEFAULT_BOLD);

//是否启用放大后的间隔控制--是
xAxis.setGranularityEnabled(true);
//放大后间隔(避免出现重复标签)--1
xAxis.setGranularity(1);

//X轴内容的位置(上,下,上下均有,上内,下内)--下
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//上下的偏移量--1f
xAxis.setYOffset(1f);
//左右的偏移量--0f
xAxis.setXOffset(0f);

//X轴最小值---10
xAxis.setAxisMinimum(-10);
//X轴最大值--60
xAxis.setAxisMaximum(60);

//是否避免第一个和最后一个数据不显示--是
xAxis.setAvoidFirstLastClipping(true);
//限制线是否绘制在数据后面--是
xAxis.setDrawLimitLinesBehindData(true);
//值格式化
xAxis.setValueFormatter(new ValueFormatter() {
    @Override
    public String getFormattedValue(float value) {
        return String.valueOf((int) value);
    }
});

//增加限制线
xAxis.addLimitLine(limitLine);
//X轴移除所有限制线
xAxis.removeAllLimitLines();
//指定移除某条限制线
xAxis.removeLimitLine();

YAxis(Y 轴)属性

属性方法功能
setEnabled()是否显示
setDrawGridLines()网格线是否绘制
enableGridDashedLine()网格线虚线
setGridDashedLine()网格线虚线
setGridColor()网格线颜色
setGridLineWidth()网格线线宽
setDrawGridLinesBehindData()网格线是否在数据后面绘制
setDrawAxisLine()Y 轴线是否绘制
setAxisLineDashedLine()Y 轴线虚线
enableAxisLineDashedLine()Y 轴线虚线
setAxisLineColor()Y 轴线颜色
setAxisLineWidth()Y 轴线线宽
setTextColor()字体颜色
setTextSize()字体大小
setTypeface()字体字重
setDrawLabels()是否绘制内容
setDrawTopYLabelEntry()是否绘制顶部内容
setCenterAxisLabels()内容是否居中
setLabelCount()设置内容显示多少个
setDrawZeroLine()是否绘制 0 线
setZeroLineColor()0 线颜色
setZeroLineWidth()0 线线宽
setGranularityEnabled()是否启用放大后的间隔控制
setGranularity()放大后间隔
setPosition()Y 轴内容位置
setXOffset()左右的偏移量
setYOffset()上下的偏移量
setMaxWidth()放大后间隔
setMinWidth()y 轴最小的宽度
setAxisMaximum()Y 轴最大值
setAxisMinimum()Y 轴最小值
setValueFormatter()值格式化
setInverted()Y 轴数据镜像
setDrawLimitLinesBehindData()限制线是否绘制在数据后面
addLimitLine()增加限制线
removeAllLimitLines()X 轴移除所有限制线
removeLimitLine()指定移除某条限制线
//--------YAxis(Y轴)---------//
YAxis yAxisRight = chart.getAxisRight();
YAxis yAxisLeft = chart.getAxisLeft();

//是否显示--是
yAxisRight.setEnabled(true);

//网格线是否绘制--是
yAxisRight.setDrawGridLines(true);
//网格线虚线--线长10,间隔10,阶0
yAxisRight.enableGridDashedLine(10f, 10f, 0f);
yAxisRight.setGridDashedLine(new DashPathEffect(new float[]{1010}, 0));
//网格线颜色--#4876FF
yAxisRight.setGridColor(Color.parseColor("#4876FF"));
//网格线线宽--1
yAxisRight.setGridLineWidth(1);
//网格线是否在数据后面绘制--是
yAxisRight.setDrawGridLinesBehindData(true);

//Y轴线是否绘制--是
yAxisRight.setDrawAxisLine(true);
//Y轴线虚线--线长10,间隔10,阶0
yAxisRight.setAxisLineDashedLine(new DashPathEffect(new float[]{10f, 10f}, 0f));
yAxisRight.enableAxisLineDashedLine(10,10,0);
//Y轴线颜色--#DA70D6
yAxisRight.setAxisLineColor(Color.parseColor("#DA70D6"));
//Y轴线线宽--1
yAxisRight.setAxisLineWidth(1);

//字体颜色--#DA70D6
yAxisRight.setTextColor(Color.parseColor("#DA70D6"));
//字体大小--11
yAxisRight.setTextSize(11);
//字体字重--加粗
yAxisRight.setTypeface(Typeface.DEFAULT_BOLD);

//是否绘制内容--是
yAxisRight.setDrawLabels(true);
//是否绘制顶部内容--是
yAxisRight.setDrawTopYLabelEntry(true);
//内容是否居中--否
yAxisRight.setCenterAxisLabels(false);
//设置内容显示多少个--10
yAxisRight.setLabelCount(10);

//是否绘制0线--是
yAxisRight.setDrawZeroLine(true);
//0线颜色--#FFA500
yAxisRight.setZeroLineColor(Color.parseColor("#FFA500"));
//0线线宽--2
yAxisRight.setZeroLineWidth(2);

//是否启用放大后的间隔控制--是
yAxisRight.setGranularityEnabled(true);
//放大后间隔(避免出现重复标签)--5
yAxisRight.setGranularity(5);

//Y轴内容位置(表格内,表格外)--表格外
yAxisRight.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
//左右的偏移量--4
yAxisRight.setXOffset(4f);
//上下的偏移量--0
yAxisRight.setYOffset(0f);
//Y轴最大的宽度--50
yAxisRight.setMaxWidth(50);
//y轴最小的宽度--10
yAxisRight.setMinWidth(10);

//Y轴最大值--110
yAxisRight.setAxisMaximum(110f);
//Y轴最小值---10
yAxisRight.setAxisMinimum(-10);

//值格式化
yAxisRight.setValueFormatter(new ValueFormatter() {
    @Override
    public String getFormattedValue(float value) {
        return String.valueOf((int) value);
    }
});

//Y轴数据镜像--false
yAxisRight.setInverted(false);

//限制线是否绘制在数据后面--是
yAxisRight.setDrawLimitLinesBehindData(true);
//增加限制线
yAxisRight.addLimitLine(limitLine);
//Y轴移除所有限制线
yAxisRight.removeAllLimitLines();
//指定移除某条限制线
yAxisRight.removeLimitLine();

LineDataSet/iLineDataSet(数据集)属性

属性方法功能
setVisible()曲线是否可见
setLabel()曲线名
setMode()绘制模式(折线,方框,圆弧)
enableDashedLine()曲线为虚线
disableDashedLine()曲线不是虚线
setColor()曲线颜色
setColors()曲线多种颜色
addColor()曲线增加颜色
setLineWidth()曲线线宽
setDrawCircles()圆点是否绘制
setCircleColor()圆圈颜色
setCircleRadius()圆圈半径
setDrawCircleHole()圆圈是否空心
setCircleHoleColor()圆圈空心颜色
setCircleHoleRadius()圆圈空心半径
setCircleColors()圆圈多种颜色
setDrawFilled()曲线到 X 轴的是否填充
setFillDrawable()曲线到 X 轴的填充资源
setFillAlpha()曲线到 X 轴的填充透明度(0,255)
setFillColor()曲线到 X 轴的填充颜色
setDrawValues()值是否绘制
setValueTextColor()值字体颜色
setValueTextSize()值字体大小
setValueTypeface()值字体字重
setValueTextColors()是否显示折线上的点数据
setValueFormatter()值格式化
setHighlightEnabled()高亮点是否可以绘制
setDrawHighlightIndicators()高亮点的横竖线
setDrawVerticalHighlightIndicator()高亮点的竖线
setDrawHorizontalHighlightIndicator()高亮点的横线
setHighLightColor()高亮点的横竖线颜色
setHighlightLineWidth()高亮点的横竖线宽度
enableDashedHighlightLine()高亮点的线设置成虚线
setForm()标志(legend)形状
setFormSize()标志(legend)大小
setFormLineWidth()标志(legend)线宽
setFormLineDashEffect()标志(legend)虚线
setDrawIcons()图片是否绘制
setIconsOffset()图片位置
removeEntry()移除指定的 Entry
removeFirst()移除第一个数据
removeLast()移除最后一个数据
removeEntry()移除索引值的数据
removeEntryByXValue()移除值为目标值的数据
clear()清空所有数据
getXMax()获取 X 轴最大值
getXMin()获取 X 轴最小值
getYMin()获取 Y 轴最小值
getYMax()获取 Y 轴最大值
//--------LineDataSet(数据集)---------//
LineDataSet lineDataSet = new LineDataSet(values, "曲线0");

//曲线是否可见--是
lineDataSet.setVisible(true);
//曲线名--基础线
lineDataSet.setLabel("基础线");

//绘制模式(折线,方框,圆弧)--折线
lineDataSet.setMode(LineDataSet.Mode.LINEAR);

//曲线为虚线--线长8,间隔5,阶0
lineDataSet.enableDashedLine(8f, 5f, 0f);
//曲线不是虚线
lineDataSet.disableDashedLine();
//曲线颜色--#66CD00
lineDataSet.setColor(Color.parseColor("#66CD00"));
//曲线多种颜色--红色,绿色
lineDataSet.setColors(Color.RED, Color.GREEN);
//曲线增加颜色--蓝色
lineDataSet.addColor(Color.BLUE);
//折线线宽--2
lineDataSet.setLineWidth(2f);

//圆点是否绘制--是
lineDataSet.setDrawCircles(true);
//圆圈颜色--黄色
lineDataSet.setCircleColor(Color.YELLOW);
//圆圈半径--3
lineDataSet.setCircleRadius(3f);
//圆圈是否空心--是
lineDataSet.setDrawCircleHole(true);
//圆圈空心颜色--RED
lineDataSet.setCircleHoleColor(Color.RED);
//圆圈空心半径--1
lineDataSet.setCircleHoleRadius(1f);
//圆圈多种颜色
lineDataSet.setCircleColors(Color.RED,Color.BLUE);

//曲线到X轴的是否填充--是
lineDataSet.setDrawFilled(true);
//曲线到X轴的填充资源--渐变
lineDataSet.setFillDrawable(getResources().getDrawable(R.drawable.shape_gradient_9066cd00_3066cd00));
//曲线到X轴的填充透明度(0,255)--150
lineDataSet.setFillAlpha(150);
//曲线到X轴的填充颜色--#66cd00
lineDataSet.setFillColor(Color.parseColor("#66cd00"));

//值是否绘制--是
lineDataSet.setDrawValues(true);
//值字体颜色--#FF6A6A
lineDataSet.setValueTextColor(Color.parseColor("#FF6A6A"));
//值字体大小--9
lineDataSet.setValueTextSize(9);
//值字体字重--SANS_SERIF
lineDataSet.setValueTypeface(Typeface.SANS_SERIF);
//多种颜色
List<Integer> colors = new ArrayList<>();
colors.add(Color.RED);
colors.add(Color.BLUE);
lineDataSet.setValueTextColors(colors);
//值格式化
lineDataSet.setValueFormatter(new ValueFormatter() {
    @Override
    public String getFormattedValue(float value) {
        return String.valueOf(value);
    }
});

//高亮点是否可以绘制--是
lineDataSet.setHighlightEnabled(true);
//高亮点的横竖线--否
lineDataSet.setDrawHighlightIndicators(false);
//高亮点的竖线--是
lineDataSet.setDrawVerticalHighlightIndicator(true);
//高亮点的横线--是
lineDataSet.setDrawHorizontalHighlightIndicator(true);
//高亮点的横竖线颜色--#1E90FF
lineDataSet.setHighLightColor(Color.parseColor("#1E90FF"));
//高亮点的横竖线宽度--1
lineDataSet.setHighlightLineWidth(1f);
//高亮点的线设置成虚线--线长8,间隔5,阶0
lineDataSet.enableDashedHighlightLine(8f, 5f, 0f);

//标志(legend)形状(线型,圆形,方块,空)--线型
lineDataSet.setForm(Legend.LegendForm.LINE);
//标志(legend)大小--11
lineDataSet.setFormSize(11);
//线宽(legend)--1
lineDataSet.setFormLineWidth(1);
//标志(legend)虚线--2,3,1
lineDataSet.setFormLineDashEffect(new DashPathEffect(new float[]{23}, 1));

//图片是否绘制--是
lineDataSet.setDrawIcons(true);
//图片位置--0,10
lineDataSet.setIconsOffset(new MPPointF(0,10));

//移除指定的Entry
iLineDataSet.removeEntry(new Entry());
//移除第一个数据
iLineDataSet.removeFirst();
//移除最后一个数据
iLineDataSet.removeLast();
//移除索引值的数据--40
iLineDataSet.removeEntry(40);
//移除值为目标值的数据--50
iLineDataSet.removeEntryByXValue(50);

//清空所有数据
iLineDataSet.clear();

//重新计算Y轴的最大值最小值
iLineDataSet.calcMinMax();

//获取X轴最大值
Log.e("max===x", iLineDataSet.getXMax() + "");
//获取X轴最小值
Log.e("min===x", iLineDataSet.getXMin() + "");
//获取Y轴最小值
Log.e("min===y", iLineDataSet.getYMin() + "");
//获取Y轴最大值
Log.e("max===y", iLineDataSet.getYMax() + "");

LineData(线数据)属性

属性方法功能
setDrawValues()值是否绘制
setValueTextColor()值字体颜色
setValueTextSize()值字体大小
setValueTypeface()值字体字重
setValueTextColors()是否显示折线上的点数据
setValueFormatter()值格式化
setHighlightEnabled()高亮点是否可以绘制
notifyDataChanged()刷新数据
addDataSet()新增曲线
removeDataSet()删除曲线
getDataSetByLabel()根据 label 获取 ILineDataSet
getDataSets()获取曲线列表
addEntry()新增点数据
//值是否绘制--是
lineData.setDrawValues(true);
//值字体颜色--#FF6A6A
lineData.setValueTextColor(Color.parseColor("#FF6A6A"));
//值字体大小--8
lineData.setValueTextSize(9);
//值字体字重--SANS_SERIF
lineData.setValueTypeface(Typeface.SANS_SERIF);
//多种颜色
List<Integer> colors = new ArrayList<>();
colors.add(Color.RED);
colors.add(Color.BLUE);
lineData.setValueTextColors(colors);
//值格式化
lineData.setValueFormatter(new ValueFormatter() {
    @Override
    public String getFormattedValue(float value) {
        return String.valueOf(value);
    }
});

//高亮点是否可以绘制--是
lineData.setHighlightEnabled(true);

//刷新数据
lineData.notifyDataChanged();

//新增曲线
lineData.addDataSet(lineDataSet);

//删除曲线
lineData.removeDataSet(iLineDataSet);
//删除曲线--索引为0
lineData.removeDataSet(0);

//根据label获取ILineDataSet--label,忽略大小写
ILineDataSet iLineDataSet = lineData.getDataSetByLabel(label, true);

//获取曲线列表
List<ILineDataSet> iLineDataSets = lineData.getDataSets();

//新增点数据--新数据,指定索引0
lineData.addEntry(new Entry(50,66),0);

Entry(数据)属性

属性方法功能
setX()x 轴对应数据
setY()y 轴对应数据
setData()额外的说明
setIcon()图片
Entry entry = new Entry();
//x轴对应数据--1
entry.setX(1);
//y轴对应数据--10
entry.setY(10);
//额外的说明--特殊说明
entry.setData("特殊说明");
//图片--皇冠
entry.setIcon(getResources().getDrawable(R.mipmap.ic_yes));

LimitLine(限制线)属性

属性方法功能
setEnabled()是否绘制
setLineColor()线颜色
setLineWidth()线宽
setLabel()内容
setTextColor()内容颜色
setTextSize()内容字体大小
setTypeface()内容字体字重
setTextStyle()内容样式
setLabelPosition()内容在线的位置
//限制线--40,X轴限制线
LimitLine limitLine = new LimitLine(40f, "X轴限制线");
//是否绘制--是
limitLine.setEnabled(true);
//线颜色--#7A67EE
limitLine.setLineColor(Color.parseColor("#7A67EE"));
//线宽--2
limitLine.setLineWidth(2f);

//内容
limitLine.setLabel("X轴限制线");
//内容颜色--#7A67EE
limitLine.setTextColor(Color.parseColor("#7A67EE"));
//内容字体大小--6
limitLine.setTextSize(6f);
//内容字体字重--加粗
limitLine.setTypeface(Typeface.DEFAULT_BOLD);
//内容样式(FILL,STROKE,FILL_AND_STROKE)--镂空
limitLine.setTextStyle(Paint.Style.STROKE);

//内容在线的位置(LEFT_TOP, LEFT_BOTTOM, RIGHT_TOP, RIGHT_BOTTOM)--左下角
limitLine.setLabelPosition(LimitLine.LimitLabelPosition.LEFT_BOTTOM);

项目 github 地址

github.com/ElaineTaylo…

若帅哥美女对该系列文章感兴趣,可微信搜索公众号(木子闲集)关注更多更新文章哦,谢谢~