在运用 MPAndroidChart-BarChart 时,有时会需要设定特定 Bar 的颜色。
根据x值设定颜色
给数据集设置颜色的方法可以用单一颜色setColor(int color)
或颜色数组setColors(int [] colors)
。使用setColors
时,数据项的颜色将按照传入颜色数组的顺序依次重复渲染。所以当数据数组的长度等于颜色数组时,其颜色序列恰好等于数据序列。
我们有一个数据组yVals
和一个颜色数组colorVals
,在添加数据项的同时在颜色数组存储相应的颜色,那么就实现了控制每一项的颜色。
这里给出的是 Kotlin 实现高亮第四列的效果,Java 原理相同。
val yVals = ArrayList<BarEntry>()
val colorVals = ArrayList<Int>()
for (i in 0..29) {
yVals.add(BarEntry(i.toFloat(), value))
if (i == 3) {
colorVals.add(Color.parseColor("#666666"))
}
else {
colorVals.add(Color.parseColor("#F9BF45"))
}
}
val barDataSet = BarDataSet(yVals, "")
barDataSet.colors = colorVals
val dataSets = ArrayList<IBarDataSet>()
dataSets.add(barDataSet)
val barData = BarData(dataSets)
mChart.data = barData
mChart.setFitBars(true)
mChart.invalidate()
效果如图。
根据y值设定颜色
在上面的代码中,我们实现了根据x值来确定颜色,其实只是对i
值做了判断而已。同理,在这个循环中value
的值我们也是可以拿到的,所以只要对value值进行判断,就可以实现根据y值确定颜色。