2016-10-09 2 views
3

Я использую MPAndroidChart для моего приложения, как это:Как установить метку х-оси с 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

т.е.:

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

благодарю вас за ответ. Но возвращаемое значение всегда равно 0,4,8,12,16,20, когда я использовал getFormattedValue (значение float, ось AxisBase), а мое центральное значение - 3,9,15,21 и 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.
Ex:

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

OK, мой плохой, спасибо симпатичной женщине ~ действительно. –

+0

Работайте со мной, отлично! –

0

я найти другое решение этой проблемы. попытайтесь добавить эти параметры

float groupSpace = 0.06f; 
float barSpace = 0.02f; 
mChart.setData(data); 
mChart.groupBars(0f, groupSpace, barSpace); 
Смежные вопросы