AndroidPlot多色LineAndPointFormatter

时间:2014-07-21 14:23:19

标签: androidplot

任何人都可以帮我解决这个问题,即我试图使用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)更改颜色;

如果有任何解决方案,请告诉我。

1 个答案:

答案 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;
}

我没有尝试编译或运行此代码,因此某处可能存在错误,但您明白了