我正在使用MPAndroidChart。
通过文档搜索但找不到任何正确实现的内容。我现在有一个图表,但如果超过一定数量我想改变线条的颜色。 Graph Example在我链接的示例中,它显示了从10中的值绘制的线。我想要这条线(通过图表的那条线)和图表中线条的颜色来改变颜色超过10 。 这可能吗?使用MPAndroidChart。我现在有一个数据集。
提前致谢。
答案 0 :(得分:1)
使用LineDataSet.setColors(),可以添加颜色列表。每个颜色条目用于一个数据条目。 ' 诀窍是计算跨边界的中间值。
每次添加数据条目时,我都会调用此方法
private fun addDiffValue(newEntry : Entry){
val last = recordedValues[2].last()
val limit = 50f
if(last.y < limit && newEntry.y > limit ){
val gradient = (newEntry.y - last.y) / (newEntry.x - last.x)
val x_border = last.x + ((limit - last.y) / gradient)
recordedValues[2].add(Entry(x_border, limit))
diffColors.add(Color.LTGRAY)
diffColors.add(Color.RED)
}
// Vorher größer, jetzt kleiner
else if(last.y > limit && newEntry.y < limit) {
val gradient = (newEntry.y - last.y) / (newEntry.x - last.x)
val x_border = last.x + ((limit - last.y) / gradient)
recordedValues[2].add(Entry(x_border, limit))
diffColors.add(Color.RED)
diffColors.add(Color.LTGRAY)
}else if(last.y > limit ){
diffColors.add(Color.RED)
} else {
diffColors.add(Color.LTGRAY)
}
recordedValues[2].add(newEntry)
}
重要的是,我从recordedValues[2].add(Entry(0f,0f))
开始,否则last()
会引发错误。
我创建LineDataSet并添加颜色:
val dataSet3 = LineDataSet(recordedValues[2], "My Label")
dataSet3.setColors(diffColors)
如您在此屏幕快照中所见,所有高于50的值均为红色。
答案 1 :(得分:0)
是。你只需要一个简单的逻辑。
List<Integer> colors = ...;
List<Entry> entries = ...;
for(...) {
entries.add(...);
if(entries.get(i).getVal() > 10)
colors.add(customcolor);
else
colos.add(othercolor);
}