【问题标题】:mpandroidchart the dot's color doesn't change in scatter chartmpandroidchart 散点图中点的颜色没有变化
【发布时间】:2019-07-31 07:00:38
【问题描述】:

我正在使用 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));

但它并没有改变点的颜色,而是改变了标签旁边的方形颜色

我试过了 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);

但是没有用。

我该如何解决这个问题?

【问题讨论】:

    标签: mpandroidchart


    【解决方案1】:

    在同一问题上花费数小时后,我意识到这是 MPAndroidChart 项目中的一个错误的结果。

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

    为了快速解决这个问题,我的解决方案是将每个条目添加到 DataSet 中两次。这意味着两个点被绘制在彼此的顶部,但都具有正确的颜色设置。

    我正在提交一个拉取请求,希望在下一个版本中解决这个问题,但现在这个快速破解应该可以工作了。

    【讨论】:

    • 感谢您的回复!还有另一种解决方案来解决这个问题。设置两个arraylist,并根据它们的条件将值放入数组中。我已经问过另一个类似的问题,幸好油炸解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多