有没有可能在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);