【发布时间】:2010-06-30 06:04:50
【问题描述】:
我正在尝试在散点图中的绘图下添加一个图例,如下所示。有人知道这是否可能吗?
之前:
之后:
【问题讨论】:
标签: java charts jfreechart
我正在尝试在散点图中的绘图下添加一个图例,如下所示。有人知道这是否可能吗?
之前:
之后:
【问题讨论】:
标签: java charts jfreechart
这是我创建的自定义标签生成器:
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 通常是一种有用的方法,但提供的constructors 可能就足够了。对于此生成器,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);
【讨论】:
StandardCategoryToolTipGenerator,另请参见example。
这是在渲染器上控制的:
XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
renderer.setBaseItemLabelsVisible(true);
【讨论】:
XYAreaRenderer 上吗?我正在努力让它工作,我可以为XYLineAndShapeRenderer 工作,但相同的代码对XYAreaRenderer 不起作用。'