Adding text not related to sections into Legend in JFreeChart PieChart
有没有办法在 JFreeChart PieChart 的图例中包含一些任意文本?我知道可以分配一个
我想在图例中插入一些与任何饼图部分完全无关的文本,例如”图例”。
我正在像这样构建图表:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
private JFreeChart constructChart() { List<Object[]> llistaValorsArr; ParamsDTO dto = (ParamsDTO) getModelObject(); String title ="Total:" + new Double(DatasetUtilities.calculatePieDatasetTotal(dataSet)).intValue(); final PiePlot plot = (PiePlot) chart.getPlot(); PieSectionLabelGenerator labelGenerator = new StandardPieSectionLabelGenerator("{0} – {1} ({2})"){ |
更新:我刚刚发现
更新 2:我一直试图在
1
2 3 |
LegendTitle legend = chart.getLegend();
BlockContainer container = legend.getWrapper(); container.add(new TextTitle("Legend")); |
添加一个”图例”文本来装饰图例应该没有那么复杂。
查看
查看
因此,解决方案是以类似的方式将
1
2 3 |
TextTitle legendText = new TextTitle("This is LEGEND:");
legendText.setPosition(RectangleEdge.BOTTOM); chart.addSubtitle(legendText); |
我有一个我最近构建的多轴图表,并提出了这个方案来区分我使用折线图显示的时间段,以显示前 12 个月强加于显示当前 12 个月的条形图。 如果您想在您的其他系列之前添加文本,以便您的图例看起来像这样: 前 12 个月:* 费用 * adj * 现金 当前 12 个月:* 费用 * adj * 现金 *// 是您的系列的形状/颜色。 (我会附上一张照片,但我没有足够的代表点……这是我第一篇关于堆栈溢出的帖子=)) 然后我建议添加一个系列并将其作为图表中的第一个系列(系列 0)。将此系列命名为您要显示的任何文本(我的示例是 “Previous 12 Months: “。然后您可以使用一些 java 自定义系列 0,以便数据不会显示在图表上,但您仍然可以在传奇。 这是我用于使折线图线条/形状不可见的自定义方法: renderer.setSeriesLinesVisible(0, false); etc …. 如果它是另一种类型的图表,例如条形图,那么只需将系列 0 的颜色设置为与背景匹配,并给它一个类似 1 的值。请注意,这确实会增加条形之间的空间!我的图表上条形之间的额外空间使它看起来更好,但如果您喜欢图表条之间的间距,这不是一个好的解决方案。 不确定这对于回答最初的问题是否有用,但对于希望在图表图例中添加文本的人来说,这是另一种选择。 享受吧! 另一种可能性是创建一个实现接口 如果你想控制图例项目的放置位置或每个项目源的顺序,你可以覆盖 LegendTitle。
2
3
4
5
6
7
8
9
public void customize(JFreeChart chart, JRChart jasperChart) {
LineAndShapeRenderer renderer = (LineAndShapeRenderer) chart.getCategoryPlot().getRenderer();
renderer.setSeriesShapesVisible(0, false);
}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/267524.html