PhilJay / MPAndroidChart

A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations.
Other
37.59k stars 9.02k forks source link

I want stacked bars, got zebra instead #3381

Open Pitel opened 7 years ago

Pitel commented 7 years ago
chart.setHardwareAccelerationEnabled(true)
chart.setTouchEnabled(false)
chart.description = null
chart.legend.isEnabled = false
chart.axisLeft.isEnabled = false
//chart.axisLeft.axisMinimum = 0.toFloat()
chart.axisLeft.axisMaximum = 120.toFloat()
chart.axisRight.isEnabled = false
chart.xAxis.isEnabled = false
chart.setDrawGridBackground(false)
chart.data = BarData()
chart.data.setDrawValues(false)
val dataSet = BarDataSet(mutableListOf(), null)
dataSet.setColors(intArrayOf(R.color.colorPrimary, R.color.colorAccent), this) // Colors
dataSet.setDrawValues(false)
chart.data.addDataSet(dataSet)

// This simulates how realtime data will be added later
chart.data.addEntry(BarEntry(chart.data.dataSets.first().entryCount.toFloat(), floatArrayOf(0.toFloat(), 20.toFloat())), 0)
chart.data.addEntry(BarEntry(chart.data.dataSets.first().entryCount.toFloat(), floatArrayOf(30.toFloat(), 20.toFloat())), 0)
chart.data.addEntry(BarEntry(chart.data.dataSets.first().entryCount.toFloat(), floatArrayOf(60.toFloat(), 20.toFloat())), 0)
chart.data.addEntry(BarEntry(chart.data.dataSets.first().entryCount.toFloat(), floatArrayOf(90.toFloat(), 20.toFloat())), 0)
chart.data.addEntry(BarEntry(chart.data.dataSets.first().entryCount.toFloat(), floatArrayOf(120.toFloat(), 20.toFloat())), 0)

I expect to get colored stacked bars, but instead, I get this:

Zebra

What am I doing wrong? I'm setting colors to dataset, I'm using array for yVal in BarEntry, and it worked fine in previous project. Only difference is, this new project is in Kotlin.

Pitel commented 7 years ago

Solution: DataSet must be einitalized with stacked BarEntry

val dataSet = BarDataSet(mutableListOf(BarEntry(0.toFloat(), floatArrayOf(0.toFloat(), 0.toFloat()))), null)

I can't find this in documentation anywhere. Maybe it should be.