是否可以在JFreeChart中将图例添加到图中?

rma*_*nus 5 java charts jfreechart

我正试图在散点图中的情节下添加一个图例,如下所示.谁知道这是否可能?

之前: 替代文字

后: 替代文字

rma*_*nus 7

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

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

除了@Guilaume的代码之外我还添加了这段代码:

renderer.setBaseItemLabelsVisible(true);
renderer.setBaseItemLabelGenerator(new LegendXYItemLabelGenerator(plot.getLegendItems()));
Run Code Online (Sandbox Code Playgroud)

这是结果:

替代文字


tra*_*god 5

扩展StandardXYItemLabelGenerator通常是一种有用的方法,但提供的构造函数可能就足够了.对于此生成器,ArgumentIndex值对应于系列名称,范围.MessageFormat

NumberFormat format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(2); // etc.
XYItemLabelGenerator generator =
    new StandardXYItemLabelGenerator("{0} {1} {2}", format, format);
renderer.setBaseItemLabelGenerator(generator);
renderer.setBaseItemLabelsVisible(true);
Run Code Online (Sandbox Code Playgroud)

此外,您还可以使用控制单个系列标签

renderer.setSeriesItemLabelsVisible(true);
Run Code Online (Sandbox Code Playgroud)