任何人都可以帮我解决这个问题,即我试图使用Android绘图和单个LineAndPointFormatter绘制多色图。根据范围值LineAndPointFormatter颜色将改变,即假设范围值在0-50之间,然后线颜色将为蓝色,如果范围值为50-100,则颜色为绿色,如果范围值为100-200,则颜色将为黑色和100以上它将是灰色的。
Check and let me know if below solution is fine or not i.e.
LineAndPointFormatter formatter;
formatter = new LineAndPointFormatter(Color.rgb(50, 143, 222),
null, null, null);
Paint paint = formatter.getLinePaint();
paint.setStrokeWidth(10); // Set the formatter width
paint.setColor(Color.BLUE); // Set the formatter color
formatter.setLinePaint(paint);
但我面临的问题是如何获取范围值并更改颜色,如果我以某种方式获得范围值,那么我可以使用paint.setColor(Color.BLUE)更改颜色;
如果有任何解决方案,请告诉我。
答案 0 :(得分:1)
假设这是一个静态图表,它应该像在系列数据中查找最大的yVal(下面的getMaxY()方法)和执行查找(下面的getColorForMaxVal()方法)一样简单。用以下代码替换上面的代码:
formatter = new LineAndPointFormatter(getColorForMaxVal(getMaxY(series1)),
null, null, null);
/**
*
* @param maxVal
* @return A color value appropriate for maxVal.
*/
int getColorForMaxVal(Number maxVal) {
double max = maxVal.doubleValue();
if(max > 50) {
return Color.GREEN;
} else if(max > 100) {
return Color.BLACK;
} else if(max > 200) {
return Color.GRAY;
} else {
return Color.BLUE;
}
}
/**
*
* @param series
* @return The largest yVal in the series or null if the series contains no non-null yVals.
*/
Number getMaxY(XYSeries series) {
Number max = null;
for(int i = 0; i < series.size(); i++) {
Number thisNumber = series.getY(i);
if(max == null || thisNumber != null && thisNumber.doubleValue() > max.doubleValue()) {
max = thisNumber;
}
}
return max;
}
我没有尝试编译或运行此代码,因此某处可能存在错误,但您明白了