大家好:我想知道是否有更好的方法来使用MPAndroidChart条件着色条。我的解决方案是创建一个条件数组颜色,如下所示:
private void setDataColored(List<String> labels, List<Float> values) {
final int greenColor = Color.parseColor("#66bb6a");
final int redColor = Color.parseColor("#ef5350");
ArrayList<BarEntry> entries = new ArrayList<>();
List<Integer> colors = new ArrayList<>();
for (int pos = 0; pos < values.size(); pos++) {
Float value = values.get(pos);
entries.add(new BarEntry(Math.abs(value), pos));
colors.add(value >= 0 ? greenColor : redColor);
}
BarDataSet dataset = new BarDataSet(entries, "Values");
dataset.setColors(colors);
ArrayList<BarDataSet> dataSets = new ArrayList<BarDataSet>();
dataSets.add(dataset);
BarData data = new BarData(labels, dataSets);
data.setDrawValues(true);
mChart.setData(data);
}
我担心性能,因为我需要创建这个colors
数组。派生问题是图例:我无法正确显示红色和绿色的含义。
答案 0 :(得分:1)
我看到文档here
我们可以根据动态条件将不同的颜色应用到条形图上。现在让我们看看你的问题,你有浮点值数组需要与颜色数组匹配。如果值为负,则应以RED表示,正值应显示为绿色。
您可以使用LineDataSet代替颜色数组,例如见下:
long