1. 程式人生 > >MPAndroidChart的一些問題解決方法

MPAndroidChart的一些問題解決方法

MPAndroidChart是一款基於Android的開源圖表庫,MPAndroidChart不僅可以在Android裝置上繪製各種統計圖表,而且可以對圖表進行拖動和縮放操作,應用起來非常靈活。MPAndroidChart同樣擁有常用的圖表型別:線型圖、餅圖、柱狀圖和散點圖。

由於MPAndroidChart網上收到的都是一些常見的方法屬性,雖然有api文件,但是找起來也麻煩,為了方便大家我就將我遇到的問題說一下。

折線圖高亮座標線的顯示隱藏

說實話這個高亮有點醜,當我們想隱藏時肯定會想到[LineChart]應該有方法設定,結果設定方法在[LineDataSet]裡;然後我們呼叫

LineDataSet set = new LineDataSet(yVals, "");
set.setHighlightEnabled(false)

結果MarkView和高亮座標系一起不見了,於是只有另闢捷徑將座標系弄成透明的:

LineDataSet set = new LineDataSet(yVals, "");
set.setHighLightColor(Color.TRANSPARENT)

X軸座標線顯示不全問題

你在使用中坑的會遇見X軸的數量過多,而螢幕過小又顯示不全,而MPAndroidChart直接在最小化預設不顯示,怎麼辦呢?

XAxis xl = lineChart.getXAxis();
xl.setSpaceBetweenLabels(1
)

同一圖中,兩條折線,根據不同的Y軸座標畫出效果

兩條線,相同的X軸,那麼X軸的DATA肯定是相同,不同的Y軸資料,兩個LineDataSet。那麼關鍵的一個屬性設定來了,它就是讓Y軸左右兩邊顯示兩級不同的value關鍵,就是紅色框內的setAxisDependency這個方法。預設情況下,兩邊都顯示左邊Y軸資料,而方法設定為AxisDependency.RIGHT就把Y軸左右顯示不同資料的功能解決了。

LineDataSet left = new LineDataSet(yVals1, "左邊y軸標註");
LineDataSet right = new LineDataSet(yVals2, "右邊y軸標註"
); right.setAxisDependency(AxisDependency.RIGHT); LineData data = new LineData(xVals, dataSets); List<ILineDataSet> dataSets =new ArrayList<>(); dataSets.add(left); dataSets.add(right); LineData data = new LineData("x軸資料", dataSets);

控制X軸顯示格式

api沒有提供相關的方法,我們只能變相的解決了,比如我們想實現下面顯示雙數的月份

ArrayList<String> xVals = new ArrayList<String>();
for (int i = 1; i <= 12; i++) {
    if (i%2==0)
    xVals.add(i+"");
    else
    xVals.add("");
}
LineData data = new LineData(xVals, "y軸資料");

MarkView的樣式自定義

繼承MarkerView,給它一個自定義佈局。就OK了