我正在使用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的颜色
我尝试过 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);
但这没用。
我该如何解决?
答案 0 :(得分:0)
在花了几个小时解决同样的问题之后,我意识到这是MPAndroidChart项目中一个错误的结果。
基本上,在ScatterChartRenderer中,对colors数组进行了处理,以便仅将偶数颜色应用于数据点。对于每个条目i,将颜色设置为colors [i / 2],这意味着由于整数除法,相同的颜色将应用于两个不同的条目。这样只能使用颜色数组的一半。
要快速解决此问题,我的解决方案是将每个条目两次添加到DataSet中。这意味着两个点相互重叠,但是都设置了正确的颜色。
我正在提交拉取请求,希望可以在下一发行版中解决此问题,但目前,这种快速hack应该可以工作。