MPAndroidChart的一些問題解決方法
阿新 • • 發佈:2019-01-29
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了