Java 是否可以将图例添加到JFreeChart中的绘图中?

Java 是否可以将图例添加到JFreeChart中的绘图中?,java,charts,jfreechart,Java,Charts,Jfreechart,我试图在散点图中的绘图下添加一个图例,如下所示。有人知道这是否可能吗 之前: 之后: 这是在渲染器上控制的: XYPlot plot = (XYPlot) chart.getPlot(); XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(); renderer.setBaseItemLabelsVisible(true); 以下是我创建的自定义标签生成器: public class Leg

我试图在散点图中的绘图下添加一个图例,如下所示。有人知道这是否可能吗

之前:

之后:
这是在渲染器上控制的:

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

以下是我创建的自定义标签生成器:

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()));
结果如下:

扩展通常是一种有用的方法,但提供的方法可能就足够了。对于此生成器,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);

谢谢你的回答。我试过了,但现在还是出现了。我以前可能还需要做什么?也许给每个绘图都指定标签?我想我现在知道了。。我已经创建了自己的项目标签生成器,名为“LegendXYItemLabelGenerator(..”),并开始工作。除了“renderer.setBaseItemLabelsVisible(true);”之外,我还添加了“renderer.setBaseItemLabelGenerator(新LegendXYItemLabelGenerator(plot.getLegendItems());”,这在
XYAreaRenderer
上可能吗?我正在尝试让它工作,我可以为
xylineandshaperender
工作,但是相同的代码不适用于
XYAreaRenderer
“+1,这是一个很好的示例。我在另一个答案中建议了另一种方法。参见
StandardCategoryToolTipGenerator