我如下创建CustomRadarDataSet类来实现此目的,但是它根本不起作用。 getColor(index)始终执行else部分。不知道为什么X-index没有正确传递给getColor(index)。我确定我的值小于maxVal。同样的方法适用于BarDataSet和LineDataSet,但不适用于RadarDataSet。
public class CustomRadarDataSet extends RadarDataSet {
public CustomRadarDataSet(List<RadarEntry> yVals, String label) {
super(yVals, label);
}
private float maxVal = 50;
public float getMaxVal() {
return maxVal;
}
public void setMaxVal(float val) {
this.maxVal = val;
}
@Override
public int getColor(int index) {
if(getEntryForIndex(index).getY() < maxVal)
return mColors.get(0);
else
return mColors.get(2);
}
}
这就是我使用CustomRadarDataSet的方式。
ArrayList<IRadarDataSet> dataSets = new ArrayList<IRadarDataSet>();
CustomRadarDataSet set = new CustomRadarDataSet(readings, "");
set.setColors(new int[]{
Color.rgb(250,55,0),
Color.rgb(0,0,255),
Color.rgb(0,0,0)
});
set.setMaxVal(maxReading); // get this value dynamically
set.setHighlightEnabled(true);
set.setDrawHighlightIndicators(true);
dataSets.add(set);
RadarData data = new RadarData(dataSets);
data.setValueTextSize(8f);
data.setDrawValues(false);
修改 x索引正确,并且getY()也返回预期的读数,y值和maxVal的比较评估正确,但是以某种方式,连接曲线仍未获得正确的颜色。看起来这只是雷达图的限制。