【MPAndroidChart 中 折线图X轴数据因为元数据的X值不是从小到大顺序排列时,显示会异常】

项目场景:

项目中需要使用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 -> {
                            "年"
                        }
                    }
                }
            }

        }

这就可以了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值