mpandroidchart点图的颜色在散点图中未更改

时间:2019-07-31 07:00:38

标签: mpandroidchart

我正在使用MPandroidchart绘制散点图。

我要制作一个具有基线的散点图。

如果值超过基准线(在我的情况下为0.2,则其颜色变为红色)。

如果不是,则颜色为蓝色。

这是我所做的代码。

if (d>=0.5)
            {
                colors.add(getBaseContext().getResources().getColor(R.color.color_red));
            } else
            {
                colors.add(getBaseContext().getResources().getColor(R.color.color_blue));
            }
            value1.add(new Entry(k,d));

但是它并没有更改点的颜色,而是更改了标签旁边的squre的颜色

enter image description here

我尝试过 1)

if(index == specificIndex) colors.add(Color);
else colors.add(NormalColor);

2)

ArrayList<Integer> color = new ArrayList<>();
if (YOUR_CONDITION) {
    color.add(ColorTemplate.rgb("#f8bf94"));
    yVals1.add(new Entry(VALUE, COUNTER));
} else {
    color.add(ColorTemplate.rgb("#e0e0e0"));
    yVals1.add(new Entry(VALUE, COUNTER));
}
set1.setColors(color);

3)

color.add(Color.RED);
color.add(context.getResources().getColor(R.color.your_defined_color_in_colors_xml));
dataSet.setCircleColors(color);

但这没用。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

在花了几个小时解决同样的问题之后,我意识到这是MPAndroidChart项目中一个错误的结果。

基本上,在ScatterChartRenderer中,对colors数组进行了处理,以便仅将偶数颜色应用于数据点。对于每个条目i,将颜色设置为colors [i / 2],这意味着由于整数除法,相同的颜色将应用于两个不同的条目。这样只能使用颜色数组的一半。

要快速解决此问题,我的解决方案是将每个条目两次添加到DataSet中。这意味着两个点相互重叠,但是都设置了正确的颜色。

我正在提交拉取请求,希望可以在下一发行版中解决此问题,但目前,这种快速hack应该可以工作。