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);
    

    嘗試結果:
    在這裏插入圖片描述

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