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[]{2, 3}, 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(8, 5, 0);
//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[]{10, 10}, 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[]{2, 3}, 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…
作者:木子闲集
链接:https://juejin.cn/post/7114939748384243749
网友评论