一. MPAndroidChart 资料汇总
-
官方资料
1.1 MPAndroidChart 源代码
1.2 文档说明(概述而已) -
其他资料
2.1 MPAndroidChart 教程
2.2 MPAndroidChart(GitHub上优秀得图表功能库)
2.2 MPAndroidChart对Y轴上的刻度宽度的设置以及其他说明
二. MPAndroidChart - LineChar 踩过的坑
-
设置 X 轴显示的座标范围无效的问题
需求:X 轴不完全显示所有座标值,达到左右滑动显示的效果。
错误实现:lineChart.setVisibleXRangeMaximum(6); lineChart.setData(lineData);
错误结果:
正确实现:
lineChart.setData(lineData); lineChart.setVisibleXRangeMaximum(6); //设置可见范围需要在设置数据之后才能正常显示
正确结果:
-
设置 Y 轴的标签数并设置最大最小值后,偏大的标签值被覆盖的问题
需求:设置 Y 轴标签按照设置的最小值到最大值进行显示,并显示指定的标签数
错误实现:lineChart.setData(lineData); YAxis axisLeft = lineChart.getAxisLeft(); //y轴左边标示 axisLeft.setDrawAxisLine(false); axisLeft.setTextColor(Color.WHITE); //字体颜色 axisLeft.setTextSize(15f); //字体大小 axisLeft.setGridColor(context.getResources().getColor(R.color.grey)); //网格线颜色 axisLeft.enableGridDashedLine(20f, 20f, 0f); //背景用虚线表格来绘制 给整成虚线 axisLeft.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART); axisLeft.setLabelCount(6, false); //显示格数 axisLeft.setAxisMinValue(0f); //设置标签最小值 axisLeft.setAxisMaxValue(15f); //设置标签最大值
错误结果:
正确实现:YAxis axisLeft = lineChart.getAxisLeft(); //y轴左边标示 axisLeft.setDrawAxisLine(false); axisLeft.setTextColor(Color.WHITE); //字体颜色 axisLeft.setTextSize(15f); //字体大小 axisLeft.setGridColor(context.getResources().getColor(R.color.grey)); //网格线颜色 axisLeft.enableGridDashedLine(20f, 20f, 0f); //背景用虚线表格来绘制 给整成虚线 axisLeft.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART); axisLeft.setLabelCount(6, false); //显示格数 axisLeft.setAxisMinValue(0f); //设置标签最小值 axisLeft.setAxisMaxValue(15f); //设置标签最大值 lineChart.setData(lineData); //设置数据需要在设置了 Y 轴标签属性之后再调用
正确结果:
-
曲线图的数据点,实际输入的的是 1 位小数,而显示时却不止 1 位小数的情况
需求:其他地方显示的都是 1 位小数,曲线上的数据点也需要是 1 位小数,保持相同精度
默认结果:
解决方案一:LineDataSet dataSet = new LineDataSet(yValues, ""); //设置数据格式 dataSet.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) { return "" + value; } }); LineData lineData = new LineData(xValues, dataSets); lineChart.setData(lineData);
解决方案二:
LineDataSet dataSet = new LineDataSet(yValues, ""); LineData lineData = new LineData(xValues, dataSets); //设置线条数据格式 lineData.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) { return "" + value; } }); lineChart.setData(lineData);
尝试结果: