一. 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);
嘗試結果: