2016-08-25 6 views
3

Только что начал использовать версию MPAndroidChart версии 3.0.0, и я создал проект, который может показывать мои значения в гистограмме. Мой вопрос в том, где я могу добавить и отобразить метки. Каждый бар должен иметь свою собственную метку, например. «Дым», «Сыр» и т. Д. Внизу. Не уверен, какая функция делает это, я активно ищу и читаю Docs/Wiki, но в настоящий момент нет радости.MPAndroidChart добавление и отображение метки гистограммы

ответ

4

В зависимости от ваших предпочтений, вы можете использовать data свойство в Entry хранить метку, а затем вернуть его в IAxisValueFormatter реализации:

public class LabelValueFormatter implements IAxisValueFormatter { 
    private final DataSet mData; 

    public LabelValueFormatter(DataSet data) { 
     mData = data; 
    } 

    @Override 
    public String getFormattedValue(float value, AxisBase axis) { 
     // return the entry's data which represents the label 
     return (String) mData.getEntryForXPos(value, DataSet.Rounding.CLOSEST).getData(); 
    } 
} 

Такой подход позволяет использовать Entry конструктор (или BarEntry в данном случае), чтобы добавить метки, которые могут улучшить читаемость кода:

ArrayList<BarEntry> entries = new ArrayList<>(); 
for (int i = 0; i < length; i++) { 
    // retrieve x-value, y-value and label 
    entries.add(new BarEntry(x, y, label)); 
} 
BarDataSet dataSet = new BarDataSet(entries, "description"); 
BarData data = new BarData(dataSet); 
mBarChart.setData(data); 
mBarChart.getXAxis().setValueFormatter(new LabelValueFormatter(data)); 

Также проверьте this answer больше информацию и альтернативный подход к использованию меток с BarChart и новой версией библиотеки 3.0.0.

+0

Я не могу получить IAxisVlueFormatter, это в версии 3 lib ?. У меня есть v3 beta, указанная в gradle. Обнаружен только AxisValueFormatter. – brucen

+0

Да, это правильный класс. Со следующей версией библиотеки она будет переименована. – TR4Android

+0

Спасибо, теперь он отлично работает. просто пришлось отбрасывать данные (BarData), потому что у меня была BarData как моя переменная для адаптера Bar Chart и использована getDataSetByIndex (позиция). – brucen

 Смежные вопросы

  • Нет связанных вопросов^_^