使用JFreeChart API为饼图部分标签生成URL

时间:2010-09-14 00:51:12

标签: java jsp jfreechart pie-chart

如何使用JFree Chart包生成饼图标签的URL。我们可以扩展PieSectionLabelGenerator,但我需要举例说明如何。 请指教!

提前致谢!

3 个答案:

答案 0 :(得分:1)

只需在setLabelGenerator()上调用PiePlot即可。 MessageFormat ArgumentIndex 值对应系列名称百分比。您可以在标签生成器中引用它们,如下所示:

PiePlot plot = (PiePlot) chart.getPlot();
plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} {1} {2}"));

附录:

  

我正在寻找网址/超链接。

ChartMouseListener添加ChartPanel;您可以从相应ChartEntity的{​​{1}}获取链接。您可以使用ChartMouseEvent在浏览器中打开网址。

答案 1 :(得分:0)

请注意,此答案适用于那些为网页中使用的图表制作网址和地图的人

使用HTML地图制作饼段自己的网址 我建议你实际扩展StandardPieURLGenerator。那你只需要做两件事:

添加数据

通过构造函数参数或setter,设置一种方法将数据添加到类中的字段中。

覆盖generateURL

当JFreeChart希望生成器创建URL时,将调用generateURL。如果你想添加参数,那么我会做这样的事情:

public String generateURL(PieDataset dataset, Comparable key, int pieIndex)
{
  return super.generateURL(dataset, key, pieIndex) + "&" + yourParameters;
}

在标签中添加网址

扩展StandardPieSectionLabelGenerator并覆盖generateAttributedSectionLabel,而不是执行上述相同步骤。您的功能现在看起来更像是这样:

public String generateAttributedSectionLabel(PieDataset dataset, Comparable key)
{
  return super.generateAttributedSectionLabel(dataset, key) + "<a href="YOUR_URL_HERE" />";
}

答案 2 :(得分:0)

static class CustomLegendGenerator
        implements PieSectionLabelGenerator {

    public String generateSectionLabel(final PieDataset dataset, final Comparable key) {
        String temp = null;
        if (dataset != null) {
            temp = key.toString();
            if (key.toString().equalsIgnoreCase("abc")) {
                temp = temp + " (abc String)";
            }
            if (key.toString().equalsIgnoreCase("xyz")) {
                temp = temp + " (xyz description)";
            }
            if (key.toString().equalsIgnoreCase("klm")) {
                temp = temp + " (Klm description)";
            }
        }
        return temp;
    }

    public AttributedString generateAttributedSectionLabel(PieDataset pd, Comparable cmprbl) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}