XYPlot
是否可以在不使用不同系列的情况下具有不同颜色的形状?
一个想法是扩展,XYLineAndShapeRenderer
但是在绘制单个形状时我可以在哪里更改它们的颜色?
XYPlot
是否可以在不使用不同系列的情况下具有不同颜色的形状?
一个想法是扩展,XYLineAndShapeRenderer
但是在绘制单个形状时我可以在哪里更改它们的颜色?
我自己找到了解决方案
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
)并更改整个系列的颜色。我画完后改回来。
这感觉就像一个黑客。框架内是否有更优雅的解决方案?