Сгруппированный Barchart не группирует наборы данных с AndroidChartAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Сгруппированный Barchart не группирует наборы данных с AndroidChart

Сообщение Anonymous »

Прежде всего, английский не мой первый язык, поэтому, пожалуйста, извините ошибки.
Я использую Android Studio, несколько лет назад я написал простое приложение для хранения некоторых данных и генерирования различных графиков (не в реальном времени), это было в Java и использовал MpandroidChart. Fork of MpandroidChart), но теперь группировка наборов данных не работает (единый набор данных, а наборы с укладками в порядке). < /p>
Это код (комментарии и некоторые имена на итальянском языке !!!). < /p>
Функция для создания данных, не отличающихся от Java: < /p>

private fun getAllenamenti(annoprec: Boolean): BarData {
var titolo = ""
var titolo2 = ""
val set1: BarDataSet
var set2: BarDataSet? = null //solo se doppia serie
val serie1: ArrayList
var serie2: ArrayList? = null //si usa solo se 2 anni!
if (mese < 13) { //solo il mese
titolo = mesi[mese-1] + " " + anno
serie1 = allenamentiMese(mese, anno)
if (annoprec) { //ricicliamo le variabili di prima, serve serie mese anno precedente
var anno2 = anno-1 //confrontiamo con l'anno precedente al selezionato
if (anno == sessionYears[sessionYears.size-1].toInt()) { //se è selezionato l'ultimo anno...
anno2 = anno+1
}
titolo2 = mesi[mese-1] + " " + anno2
serie2 = allenamentiMese(mese, anno2)
}
} else { //tutto l'anno, qua contiamo numero allenamenti in ogni mese
titolo = getString(R.string.Year) + " " + anno
serie1 = allenamentiAnno(anno)
if (annoprec) { //doppia serie con anno precedente
var anno2 = anno-1 //confrontiamo con l'anno precedente al selezionato
if (anno == sessionYears[sessionYears.size-1].toInt()) { //se è selezionato l'ultimo anno...
anno2 = anno+1
}
titolo2 = getString(R.string.Year) + " " + anno2
serie2 = allenamentiAnno((anno2))
}
}
set1 = BarDataSet(serie1, titolo)
set1.setDrawValues(true)
set1.color = getColor(R.color.colorSet1)
set1.setValueTextColor(R.color.colorSet1)
if (annoprec) {
set2 = BarDataSet(serie2, titolo2)
set2.setDrawValues(true)
set2.color = getColor(R.color.colorSet2)
set2.setValueTextColor(R.color.colorSet2)
}
val dataSets: ArrayList = ArrayList()
dataSets.add(set1)
if (annoprec) {
dataSets.add(set2!!)
}
var data = BarData(dataSets)
return data
}
< /code>
Это деталь, генерирующая график (MCHART, инициированный в OnCreate): < /p>
private fun mostragrafico() {
var bdata: BarData? = null
when (idgraph) {
............

3 -> if (sessionYears.size >= 2) { //ci sono almeno 2 anni, mostra anno selezionato e il precedente
mese = 13
bdata = getAllenamenti(true)
}

.......
}
}
//resettiamo tutto il grafico se ci sono dati presenti
if (mChart.data!=null) {
mChart.data!!.clearValues()
mChart.xAxis.valueFormatter = null
mChart.notifyDataSetChanged()
mChart.clear()
}
//aggiungiamo i nuovi dati
settaEtichetteGrafico() //per chiamarla dopo il reset del grafico
if (bdata != null) {
mChart.setData(bdata)
mChart.barData.setValueFormatter(CustDefValueFormatter())
val xAxis = mChart.xAxis
xAxis.textColor = getColor(R.color.colorDark1)
mChart.setFitBars(true)
//dimension istandard per 1 set di barre
bdata.barWidth = 0.9f
bdata.setValueTextSize(9f)
mChart.xAxis.setCenterAxisLabels(false)
if (bdata.getDataSetCount() == 2) { //se ci sono più datasets (noi al max 2)
mChart.xAxis.setCenterAxisLabels(true)
val groupSpace = 0.2f
val barSpace = 0.0f
val barWidth = 0.4f
mChart.groupBars(1f, groupSpace, barSpace)
bdata.barWidth = barWidth
bdata.setValueTextSize(6f)
}
mChart.invalidate()
}
}
< /code>
Это значения наборов: < /p>
DataSet, label: Anno 2025, entries: 12
Entry, x: 1.0 y: 6.0 Entry, x: 2.0 y: 8.0 Entry, x: 3.0 y: 6.0 Entry, x: 4.0 y: 1.0 Entry, x: 5.0 y: 0.0 Entry, x: 6.0 y: 0.0 Entry, x: 7.0 y: 0.0 Entry, x: 8.0 y: 0.0 Entry, x: 9.0 y: 0.0 Entry, x: 10.0 y: 0.0 Entry, x: 11.0 y: 0.0 Entry, x: 12.0 y: 0.0
DataSet, label: Anno 2024, entries: 12
Entry, x: 1.0 y: 13.0 Entry, x: 2.0 y: 11.0 Entry, x: 3.0 y: 8.0 Entry, x: 4.0 y: 10.0 Entry, x: 5.0 y: 10.0 Entry, x: 6.0 y: 9.0 Entry, x: 7.0 y: 5.0 Entry, x: 8.0 y: 4.0 Entry, x: 9.0 y: 5.0 Entry, x: 10.0 y: 8.0 Entry, x: 11.0 y: 8.0 Entry, x: 12.0 y: 9.0
< /code>
И вот результат, Graph1 отображается «старой» версией в Java и Graph2, отображаемой «новой» версией, одинаковыми данными (разные цвета):
graph1
graph2 < /p>
Заранее благодаря любому предложению < /> (я знаю, что код может быть впечатлен, сначала Al Al Al Al All Lay Late at at aTpe aSt a it aT at aTS at aTs at aTs at aTS.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... droidchart
Ответить

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

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

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

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

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