如何在MPAndroidChart中设置值的颜色?

时间:2016-02-29 19:06:49

标签: android mpandroidchart

我正在使用MPAndroidChart

通过文档搜索但找不到任何正确实现的内容。我现在有一个图表,但如果超过一定数量我想改变线条的颜色。 Graph Example在我链接的示例中,它显示了从10中的值绘制的线。我想要这条线(通过图表的那条线)和图表中线条的颜色来改变颜色超过10 。 这可能吗?使用MPAndroidChart。我现在有一个数据集。

提前致谢。

2 个答案:

答案 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的值均为红色。

enter image description here

答案 1 :(得分:0)

是。你只需要一个简单的逻辑。

List<Integer> colors = ...;
List<Entry> entries = ...;

for(...) {

   entries.add(...);

   if(entries.get(i).getVal() > 10) 
       colors.add(customcolor);
   else 
       colos.add(othercolor);
}