2017-06-07 38 views
0

我正在使用MPAndroidChart作爲條形圖。 其實我有這樣的情況: enter image description hereMpAndroidChart在條形圖中獲取零值線

對於第2值我有0.0我想也引起了藍線的零值,就像這樣: enter image description here

我所獲得這一結果獲得最大值的百分比非常低,但我想顯示在0.0的行而不顯示0.5。 如果該值爲0.0,我不想將其更改爲顯示該行。有沒有辦法?一些想法?

這是我的條形圖的設置:通過編寫自定義IValueFormatter你能解決這個

YAxis leftAxis = barChart.getAxisLeft(); 
    leftAxis.setAxisMinimum(0f); 

    barChart.setDrawBarShadow(false); 
    barChart.getDescription().setEnabled(false); 
    barChart.setPinchZoom(false); 
    barChart.setDrawGridBackground(false); 
    barChart.setScaleEnabled(false); 
    barChart.getLegend().setEnabled(false); 
    barChart.getXAxis().setDrawAxisLine(false); 
    barChart.getXAxis().setDrawGridLines(false); 
    barChart.getAxis(YAxis.AxisDependency.LEFT).setEnabled(true); 
barChart.getAxis(YAxis.AxisDependency.LEFT).setDrawGridLines(false); 
    barChart.getAxis(YAxis.AxisDependency.LEFT).setDrawLabels(false); 
    barChart.getAxis(YAxis.AxisDependency.RIGHT).setEnabled(false); 
    barChart.getXAxis().setDrawLabels(false); 
    barChart.setDrawValueAboveBar(true); 

感謝

回答

1

那會樓y值小於給定的量降低到零。然後,y值將呈現在0.5f處,但被標記爲0.0

這裏是適應項目從DefaultValueFormatter一個非常粗略的例子:

import com.github.mikephil.charting.data.Entry; 
import com.github.mikephil.charting.utils.ViewPortHandler; 

import java.text.DecimalFormat; 

public class FlooringValueFormatter implements IValueFormatter 
{ 

    protected DecimalFormat mFormat; 

    protected int mDecimalDigits; 
    protected float mMinimum; 

    public FlooringValueFormatter(int digits, float minimum) { 
     setup(digits); 
     this.mMinimum = minimum; 
    } 

    public void setup(int digits) { 

     this.mDecimalDigits = digits; 

     StringBuffer b = new StringBuffer(); 
     for (int i = 0; i < digits; i++) { 
      if (i == 0) 
       b.append("."); 
      b.append("0"); 
     } 

     mFormat = new DecimalFormat("###,###,###,##0" + b.toString()); 
    } 

    @Override 
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) { 
     if (value < mMinimum) { 
      return mFormat.format(0); 
     } 

     return mFormat.format(value); 
    } 

    public int getDecimalDigits() { 
     return mDecimalDigits; 
    } 
} 

消耗它是這樣的:

barData.setValueFormatter(new FlooringValueFormatter(2, 0.5f)); 
相關問題