Прежде всего, английский не мой первый язык, поэтому, пожалуйста, извините ошибки.
Я использую 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
Сгруппированный Barchart не группирует наборы данных с AndroidChart ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1744189175
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.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79563905/grouped-barchart-not-grouping-datasets-with-androidchart[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия