有没有可能在JFreeChart中将图例添加到图中?

我试图在散点图下面的图中添加一个图例,如下所示。 任何人都知道这是可能的吗?

之前: 替代文字

后: 替代文字

扩展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); 

这是我创build的自定义标签生成器:

 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())); 

结果如下:

替代文字

这是在渲染器上进行控制的:

 XYPlot plot = (XYPlot) chart.getPlot(); XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(); renderer.setBaseItemLabelsVisible(true);