项目场景:
项目中需要使用MPAndroidChart 显示统计图表,柱状图和饼状图都显示正常,但是折线图出问题了,在原始数据下标不是从小到大的情况下,折线图的x轴标签会显示异常
问题描述
当数据集中的X轴为 1 2 3 4 5 6 7 8 9 时 x轴标签显示正常 ,但是如果为 3 6 5 9 8 7 之类的 错乱顺序,x轴显示就会冒出来一堆不知道从哪儿拿到的数字
leaseAndReturn.forEach { info ->
entries.add(Entry(info.date.toFloat(), info.lease.toFloat()))
}
解决方案:
val entries = ArrayList<Entry>()
val labelName = ArrayList<String>()//接收原始数据
leaseAndReturn.forEach { info ->
entries.add(Entry(info.date.toFloat(), info.lease.toFloat()))
labelName.add(info.date) //定义数据 接收原始X轴显示标签
}
然后把数据集的x轴数据修改为index
//折线图的 X轴想要正常显示 数据集中的下标一定要 是按照从小到大顺序排列
//但是日期天数可能是 从大到小 所以此处以数据的下标给定 使数据可以正常显示
entries.forEachIndexed { index, entry ->
entry.x = index.toFloat()
}
重写X轴标签格式化器 以下标来获取数组中的原始数据
lineChart.xAxis.apply {
labelCount = labelName.size
valueFormatter = object : ValueFormatter() {
//重写X轴标签格式化器 以下标来获取数组中的原始数据
override fun getAxisLabel(value: Float, axis: AxisBase?): String {
return labelName[value.toInt()] + when (mDateType) {
"day" -> {
"日"
}
"month" -> {
"月"
}
else -> {
"年"
}
}
}
}
}
这就可以了