2016-10-09 95 views
3

我用MPAndroidChart我的應用程序是這樣的:如何設置x軸的標籤與MPAndroidChart

enter image description here

,但我不能添加標籤一樣,

+0

怎麼樣顯示你到目前爲止_tried_? – SOFe

+0

我不認爲你可以「分組」現有的軸標籤。不過,我認爲API有改變標籤的方法。看到http://stackoverflow.com/questions/27061803/how-to-set-values-for-xlabels-and-ylabels-in-mpandroidchart –

+0

我已經顯示了標籤,但標籤的位置是錯誤的,因爲getFormattedValue總是返回0,4,8,12,16,20; – kemp

回答

1

您可以覆蓋AxisValueFormatter

ie:

xAxis.setValueFormatter(new AxisValueFormatter() { 
      @Override 
      public String getFormattedValue(float value, AxisBase axis) { 
       return "YOUR_TEXT"; // here you can map your values or pass it as empty string 
      } 

      @Override 
      public int getDecimalDigits() { 
       return 0; //show only integer 
      } 
     }); 

您可以選擇c輸入組的值來映射組名稱,其他則爲空。那將是最簡單的方法。

+0

謝謝你的回答。但是當我使用getFormattedValue(float值,AxisBase軸)時,返回值總是0,4,8,12,16,20,我的中心值是3,9,15,21.and i會讓我的標籤位置錯誤 – kemp

11

您是否需要您的標籤而不是那些

如果是這樣,那麼這裏就是這樣做的方法。

XAxis標籤添加到ArrayList

final ArrayList<String> xLabel = new ArrayList<>(); 
    xLabel.add("9"); 
    xLabel.add("15"); 
    xLabel.add("21"); 
    xLabel.add("27"); 
    xLabel.add("33"); 

    // or use some other logic to save your data in list. For ex. 
    for(i=1; i<50; i+=2) 
    { 
     xLabel.add(""+3*i); 
    } 

然後使用在setValueFormatter這個標籤。
防爆

XAxis xAxis = mChart.getXAxis(); 
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); 
    xAxis.setDrawGridLines(false); 
    xAxis.setValueFormatter(new IAxisValueFormatter() { 
     @Override 
     public String getFormattedValue(float value, AxisBase axis) { 
      return xLabel.get((int)value); 
     } 
    }); 

結果

enter image description here

+0

謝謝你,我也有問題,你的回答解決了我的問題。 –

+3

好吧,我的壞,謝謝美女〜真的。 –

+0

爲我工作,太棒了! –

0

我找到另一種解決這個問題。嘗試添加這些參數

float groupSpace = 0.06f; 
float barSpace = 0.02f; 
mChart.setData(data); 
mChart.groupBars(0f, groupSpace, barSpace);