Как правильно добавлять метки на гистограмму в MPAndroidChartAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Как правильно добавлять метки на гистограмму в MPAndroidChart

Сообщение Гость »


Я использую MPAndroidChart и хочу создать гистограмму. На самом деле это работает нормально. Но проблема в этикетках на разных полосках. Как-то они просто не совпадают. Только если у меня ровно 3 полоски, метки отображаются правильно. Здесь вы можете увидеть картинку:
Изображение


Вот код Java для Android:

import android.graphics.Color; импортировать android.graphics.Typeface; импортировать android.os.Bundle; импортировать android.view.LayoutInflater; импортировать android.view.View; импортировать android.view.ViewGroup; импортировать androidx.fragment.app.Fragment; импортировать com.example.drinkserver.databinding.FragmentTestBinding; импортировать com.github.mikephil.charting.comComponents.LimitLine; импортировать com.github.mikephil.charting.comComponents.XAxis; импортировать com.github.mikephil.charting.comComponents.YAxis; импортировать com.github.mikephil.charting.data.BarData; импортировать com.github.mikephil.charting.data.BarDataSet; импортировать com.github.mikephil.charting.data.BarEntry; импортировать com.github.mikephil.charting.formatter.IndexAxisValueFormatter; импортировать java.util.ArrayList; импортировать java.util.List; общественный класс FR_Test расширяет фрагмент { общественный FR_Test() { // Требуемый пустой публичный конструктор } @Override public void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); } частная привязка FragmentTestBinding; @Override public View onCreateView (инфлятор LayoutInflater, контейнер ViewGroup, Пакет saveInstanceState) { привязка = FragmentTestBinding.inflate(инфлятор, контейнер, ложь); /* Создавайте гистограммы с помощью MP Android Chart */ //Добавляем точки данных ArrayList dataVals = новый ArrayList(); dataVals.add(новый BarEntry(1, 3)); //dataVals.add(new BarEntry(2, 4)); //dataVals.add(new BarEntry(3, 5)); //dataVals.add(new BarEntry(4, 3)); // Создаем BarDataSet с данными BarDataSet barDataSet = новый BarDataSet(dataVals, ""); barDataSet.setDrawValues ​​(истина); barDataSet.setValueTextColor(Color.BLACK); // Настраиваем внешний вид баров barDataSet.setColors(Color.rgb(0, 155, 0)); // Устанавливаем цвет полосы // Создаём BarData и добавляем в него свой BarDataSet BarData barData = новый BarData(barDataSet); barData.setBarWidth(0.6f); // Получаем XAxis XAxis xAxis =binding.barChartRatings.getXAxis(); xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); xAxis.setDrawAxisLine(истина); xAxis.setDrawGridLines(ложь); xAxis.setTextSize(10f); xAxis.setTypeface(Typeface.DEFAULT_BOLD); // Добавляем метки для баров List barLabels = новый ArrayList(); barLabels.add(""); for (int i = 0; i < dataVals.size(); i++) { barLabels.add("Бар " + (i + 1)); } // Преобразуем список в массив окончательная String[] barLabelsA = barLabels.toArray(new String[0]); // Устанавливаем пользовательские метки для оси X xAxis.setValueFormatter(новый IndexAxisValueFormatter(barLabelsA)); // Получаем ось Y (левая ось) YAxis leftYAxis =binding.barChartRatings.getAxisLeft(); leftYAxis.setDrawLabels (истина); leftYAxis.setDrawGridLines(истина); leftYAxis.setAxisMinimum(0f); leftYAxis.setAxisMaximum(5.5f); leftYAxis.setGranularity(1f); // Устанавливаем количество меток, не заставляя их быть целыми числами leftYAxis.setLabelCount(6, ложь); leftYAxis.setTextSize(14f); // Создаем LimitLine для верхнего края LimitLine UpperRim = новая LimitLine(5.5f, ""); UpperRim.setLineColor(Color.BLACK); UpperRim.setLineWidth(1f); // Добавляем верхний край к левой оси Y leftYAxis.addLimitLine(upperRim); // Получаем ось Y и скрываем ее YAxis rightYAxis =binding.barChartRatings.getAxisRight(); rightYAxis.setDrawLabels (ложь); rightYAxis.setDrawGridLines(ложь); // Добавляем на график непрерывный верхний край привязка.barChartRatings.getAxisRight().setDrawTopYLabelEntry(true); привязка.barChartRatings.getAxisLeft().setDrawTopYLabelEntry(true); // Удаляем легенду привязка.barChartRatings.getLegend().setEnabled(false); // Скрываем метку описания привязка.barChartRatings.getDescription().setEnabled(false); // Устанавливаем данные для гистограммы привязка.barChartRatings.setData(barData); // Делаем диаграмму недействительной, чтобы обновить ее внешний вид привязка.barChartRatings.invalidate(); вернуть привязку.getRoot(); } } и соответствующий файл макета XML:

List barLabels = new ArrayList(); всегда содержит правильное количество строк столбцов. Таким образом, при наличии только одной точки данных она имеет пустую строку «» (так что метки столбцов не отображаются в позиции 0) и «Bar1». Так что довольно странно, почему «Бар1» повторяется 3 раза. Что делает проблему еще более странной, так это то, что при наличии другого количества баров поведение меняется, хотя barLabels всегда имеет правильное количество строк. Знаете ли вы, что вызывает эту проблему?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как правильно добавлять метки на гистограмму в MPAndroidChart
    Гость » » в форуме Android
    0 Ответы
    29 Просмотры
    Последнее сообщение Гость
  • MPAndroidChart добавление и отображение метки гистограммы
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Метки YAxis в библиотеке MPAndroidChart
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Суммировать по группам и добавлять или подстроку перед группировкой и добавлять строку после группировки
    Anonymous » » в форуме Python
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Как правильно построить гистограмму с помощью numpy и сопоставить ее с функцией плотности?
    Гость » » в форуме Python
    0 Ответы
    57 Просмотры
    Последнее сообщение Гость

Вернуться в «Android»