gpt4 book ai didi

android - MPAndroidChart:带有间隙的水平条形图

转载 作者:行者123 更新时间:2023-12-02 12:50:49 30 4
gpt4 key购买 nike

我在Android Studio中将Kotlin与MPAndroidChart结合使用。我设法从示例中构建标准图表,但是我需要一些不同的东西。

是否可以在条形图包含间隙的地方构建水平条形图?
类似于以下内容:
horizontal bar chart with gaps

我要实现的是使用时间条在时间轴(例如从0小时到24小时->一整天)上显示特定事件(例如事件1,事件2,事件3和事件4)的发生情况。

因此,在上图中,可以粗略估计:事件1从0H> 1H发生,然后再次从6H> 10H发生,其他事件类似。

我可以用MPAndroidChart做到这一点吗?

最佳答案

根据我所说的,这是我要做的事情:

val events = listOf(
Event(0, 0f, 1.5f),
Event(2, 1.5f, 1.5f),
Event(1, 3f, 3f),
Event(3, 6f, 1f),
Event(0, 7f, 3f),
Event(1, 10f, 1f),
Event(2, 11f, 7f),
Event(3, 18f, 8f))

val categoryColors = listOf(
Color.parseColor("#ff3f1f"),
Color.parseColor("#9fff3f"),
Color.parseColor("#ffff3f"),
Color.parseColor("#1fbf3f"))

val bgColor = requireContext().obtainStyledAttributes(
intArrayOf(android.R.attr.windowBackground)).use {
it.getColor(0, 0)
}

val chart = binding.barChart
val dataSets = mutableListOf<IBarDataSet>()
val vals = events.mapIndexed { i, event ->
event.duration
}.toFloatArray()
for (i in 0 until 4) {
val colors = events.mapIndexed { j, event ->
if (event.category == i) categoryColors[i] else bgColor
}.toIntArray()
dataSets += BarDataSet(listOf(BarEntry(i.toFloat(), vals, null)), i.toString()).apply {
stackLabels = arrayOfNulls(1)
setColors(*colors)
isHighlightEnabled = false
setDrawValues(false)
}
}
chart.apply {
data = BarData(dataSets)
description = null
axisRight.apply {
setDrawGridLines(false)
}
axisLeft.apply {
setDrawLabels(false)
setDrawGridLines(false)
}
xAxis.apply {
setDrawLabels(false)
setDrawGridLines(false)
}
legend.isEnabled = false
}

Event类:

data class Event(val category: Int,
val time: Float,
val duration: Float)


结果:

关于android - MPAndroidChart:带有间隙的水平条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61989194/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com