如何在列中显示饼图的图例?

时间:2012-11-09 11:45:23

标签: java render jfreechart legend

我有一个包含许多部分的饼图,此饼图的图例呈现为一行。如何将图例渲染为两列?

2 个答案:

答案 0 :(得分:9)

方法getLegendItem(),见here,提供了在您选择的任何Container中呈现图例项目所需的所有信息。 GridLayout(0, 2)会将它们排列成两列,用于任意数量的行。要取消现有图例,请在调用图表工厂时将legend设置为false;根据建议here,这些项目仍然可用。

附录:根据PieChartDemo1,此片段使用getLegendItems().iterator及其ColorIcon的变体。

legend image

public static JPanel createDemoPanel() {
    JPanel panel = new JPanel();
    JFreeChart chart = createChart(createDataset());
    panel.add(new ChartPanel(chart));
    panel.add(createLegendPanel((PiePlot) chart.getPlot()));
    return panel;
}

private static JPanel createLegendPanel(PiePlot plot) {
    JPanel panel = new JPanel(new GridLayout(0, 2, 5, 5));
    Iterator iterator = plot.getLegendItems().iterator();
    while (iterator.hasNext()) {
        LegendItem item = (LegendItem) iterator.next();
        JLabel label = new JLabel(item.getLabel());
        label.setIcon(new ColorIcon(8, item.getFillPaint()));
        panel.add(label);
    }
    return panel;
}

答案 1 :(得分:2)

看一下这个主题:Link

看起来像你正在寻找的东西。如果没有,请发布更多信息或截图,了解您拥有的和所需的信息。