MPAndroidChart - LineChart(v2.2.5)踩过的坑

一. MPAndroidChart 资料汇总

  1. 官方资料
    1.1 MPAndroidChart 源代码
    1.2 文档说明(概述而已)

  2. 其他资料
    2.1 MPAndroidChart 教程
    2.2 MPAndroidChart(GitHub上优秀得图表功能库)
    2.2 MPAndroidChart对Y轴上的刻度宽度的设置以及其他说明

二. MPAndroidChart - LineChar 踩过的坑

  1. 设置 X 轴显示的座标范围无效的问题
    需求:X 轴不完全显示所有座标值,达到左右滑动显示的效果。
    错误实现:

    lineChart.setVisibleXRangeMaximum(6); 
    lineChart.setData(lineData); 
    

    错误结果:
    在这里插入图片描述

    正确实现:

    lineChart.setData(lineData); 
    lineChart.setVisibleXRangeMaximum(6); //设置可见范围需要在设置数据之后才能正常显示
    

    正确结果:
    在这里插入图片描述

  2. 设置 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 轴标签属性之后再调用
    

    正确结果:
    在这里插入图片描述

  3. 曲线图的数据点,实际输入的的是 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);
    

    尝试结果:
    在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章