在JFreeChart的XYPlot中处理形状的颜色

时间:2013-06-26 09:34:51

标签: jfreechart

是否可以在XYPlot中使用不同颜色的形状而不使用不同的系列?

一个想法是扩展XYLineAndShapeRenderer但是在绘制单个形状时我可以在哪里更改它?

1 个答案:

答案 0 :(得分:1)

我自己找到了解决方案

public class QualityChartRenderer extends XYLineAndShapeRenderer {

    private int dataSeries;

    public QualityChartRenderer(double high, double low, int dataSeries) {
        this.dataSeries = dataSeries;
    }

    @Override
    public void drawItem(Graphics2D g2, XYItemRendererState state,
            Rectangle2D dataArea, PlotRenderingInfo info, XYPlot plot,
            ValueAxis domainAxis, ValueAxis rangeAxis, XYDataset dataset,
            int series, int item, CrosshairState crosshairState, int pass) {

        Paint paint = getSeriesPaint(series);

        if (series == dataSeries && item < 2) {
            setSeriesPaint(series, Color.RED);
        }
        super.drawItem(g2, state, dataArea, info, plot, domainAxis, rangeAxis,
                dataset, series, item, crosshairState, pass);
        setSeriesPaint(series, paint);
    }

}

对于绘制的每个形状,我检查我的状况(此处仅item < 2)并更改整个系列的颜色。我在绘图后将其更改回来。

这感觉就像一个黑客。框架内是否有更优雅的解决方案?