Jfreechart - 如何添加带有破折号的图例项目?

发布于 2024-12-01 19:18:13 字数 159 浏览 3 评论 0原文

我想添加一个带有破折号 (-) 的图例项目来表示图表中的某些系列。提供的默认形状仅是 Plot.DEFAULT_LEGEND_ITEM_CIRCLE 和 Plot.DEFAULT_LEGEND_ITEM_BOX。有类似 Plot.DEFAULT_LEGEND_ITEM_LINE 的东西吗?如何创建一个?

I want to add a legend item with a dash (-) to denote some series in my chart. The default shape provided are only Plot.DEFAULT_LEGEND_ITEM_CIRCLE and Plot.DEFAULT_LEGEND_ITEM_BOX. Is there something like Plot.DEFAULT_LEGEND_ITEM_LINE ? How to create one ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

没有伤那来痛 2024-12-08 19:18:13

您可以创建自己的图例项目源。假设您有一个与要显示的图例相对应的元素集合,称为 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; 
  }
}

那么您需要从图表中删除旧图例,并添加新图例:

JFreeChart chart = // your chart 
chart.removeLegend();
LegendTitle legend = new LegendTitle(new LineLegendItemSource());
chart.addLegend(legend);

如您所见 LegendItem 构造函数具有一定的形状,因此您基本上可以在其中绘制任何您想要的内容。

You can create your own legend item source. Assuming you have a collection of elements corresponding to the legends you want to display called 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; 
  }
}

Then you need to remove the old legends from the chart, and add the new:

JFreeChart chart = // your chart 
chart.removeLegend();
LegendTitle legend = new LegendTitle(new LineLegendItemSource());
chart.addLegend(legend);

As you can see the LegendItem constructor takes a shape, so you can basically draw whatever you want in there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文