Jfreechart - 如何使用短划线添加图例项?

sam*_*sam 4 java legend jfreechart legend-properties

我想添加带有短划线( - )的图例项目来表示我的图表中的某些系列.提供的默认形状仅为Plot.DEFAULT_LEGEND_ITEM_CIRCLE和Plot.DEFAULT_LEGEND_ITEM_BOX.是否有类似Plot.DEFAULT_LEGEND_ITEM_LINE的内容?如何创建一个?

Jes*_*Jes 6

您可以创建自己的图例项源.假设您有一个与要显示的图例对应的元素集合,称为legendKeys:

class LineLegendItemSource implements LegendItemSource {
    public LegendItemCollection getLegendItems() {
     LegendItemCollection itemCollection = new LegendItemCollection();
     for (Comparable comparable : legendKeys) {
        Paint paint = // get the paint you want
        LegendItem item = new LegendItem("string to display", 
                                         "description", 
                                         "tooltip", 
                                         "url", 
                                         new Line2D.Double(0, 5, 10, 5), paint);
        itemCollection.add(item);
     }
     return itemCollection; 
  }
}
Run Code Online (Sandbox Code Playgroud)

然后你需要从图表中删除旧图例,并添加新的:

JFreeChart chart = // your chart 
chart.removeLegend();
LegendTitle legend = new LegendTitle(new LineLegendItemSource());
chart.addLegend(legend);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,LegendItem构造函数采用了一种形状,因此您基本上可以在那里绘制任何内容.