我试图在散点图下方添加一个图例,如下所示。 有人知道这是否可能吗?
之前:
之后:
之前:
![alt text](https://dl.dropbox.com/u/6895838/JFreeChart/Scatterred.jpg)
![alt text](https://dl.dropbox.com/u/6895838/JFreeChart/Scatterred_modified.jpg)
public class LegendXYItemLabelGenerator extends StandardXYItemLabelGenerator
implements XYItemLabelGenerator, Cloneable, PublicCloneable,
Serializable {
private LegendItemCollection legendItems;
public LegendXYItemLabelGenerator(LegendItemCollection legendItems) {
super();
this.legendItems = legendItems;
}
@Override
public String generateLabel(XYDataset dataset, int series, int item) {
LegendItem legendItem = legendItems.get(series);
return legendItem.getLabel();
}
}
然后我在@Guilaume的代码的基础上添加了这段代码:
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseItemLabelGenerator(new LegendXYItemLabelGenerator(plot.getLegendItems()));
以下是结果:
StandardXYItemLabelGenerator
是一个常用的方法,但提供的构造函数可能已经足够。对于这个生成器,MessageFormat
的 ArgumentIndex 值对应于系列名称、域和范围。NumberFormat format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(2); // etc.
XYItemLabelGenerator generator =
new StandardXYItemLabelGenerator("{0} {1} {2}", format, format);
renderer.setBaseItemLabelGenerator(generator);
renderer.setBaseItemLabelsVisible(true);
renderer.setSeriesItemLabelsVisible(true);
这是在渲染器上控制的:
XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
renderer.setBaseItemLabelsVisible(true);
XYAreaRenderer
上可行吗?我正在尝试让它工作,对于XYLineAndShapeRenderer
我可以做到,但是同样的代码对于XYAreaRenderer
不起作用。 - skaz