0

具体来说,我希望将文本注释添加到 JFreeChart 的特定位置,该 JFreeChart 正在输出到 png 文件以供 Web 使用。可以/如何将注释添加到饼图中。我已经能够成功地将注释添加到 XYPlot,但不知道如何覆盖或添加一个到 PiePlot。

我的全部任务是使用 PiePlot 创建一种时钟。到目前为止,一切都很好,但现在我需要在 12、3、6 和 9 点钟的位置添加标签,这完全被难住了。

亚当

4

2 回答 2

2

有点老问题,但这是我如何使用极坐标图做类似的事情(在 1、2、3、... 点钟位置进行注释)。它使用 ChoiceFormatter 和 NumberTickUnit:

    final JFreeChart chart = ChartFactory.createPolarChart(
            "HAPI Hourly Usage (UTC)", ds, true, true, false);
    final PolarPlot plot = (PolarPlot) chart.getPlot();

    // Create a ChoiceFormat to map the degrees to clock positions
    double[] limits = new double[12];
    String[] formats = new String[12];
    limits[0] = 0;
    formats[0] = "12";

    // degrees = 360/12
    for (int i = 1; i < limits.length; i++) {
        limits[i] = degrees * (i);
        formats[i] = Integer.toString(i);
    }
    ChoiceFormat clock = new ChoiceFormat(limits, formats);

    TickUnit tickUnit = new NumberTickUnit(degrees, clock);

    // now configure the plot
    plot.setAngleTickUnit(tickUnit); // sets the ticks
    plot.setAngleLabelsVisible(true); // makes the labels visible
    plot.setAngleLabelPaint(Color.LIGHT_GRAY); // user choice
    plot.setAngleGridlinesVisible(true); // must set this to display the
                                         // labels
    plot.setAngleGridlinePaint(Color.BLACK); // plot's background color
                                             // (makes lines invisible)
    plot.setRadiusGridlinesVisible(false); //turn off the radius value circles
    ValueAxis axis = plot.getAxis();
    axis.setTickLabelsVisible(false); //turn off the radius value labels

最终看起来像http://img522.imageshack.us/img522/6693/hapihours.jpg

于 2011-12-21T14:38:29.223 回答
0

经过相当艰苦的搜索,我不相信这是目前可能的(JFreeChart 1.0.13)。可能的选项是:

使用 XYPlot 创建第二个图表以生成带有所需注释的第二个图像。在页面上叠加此图像。这个选项很糟糕,因为它会使要上传的图表图像数量翻倍。

将图像设置为页面上的背景,并将图像上的文本设置为 HTML。不好,因为它不可维护并且使数据传输令人头疼。

就我个人而言,我只是想找到另一种方式来传达标题中的信息,但我想将我的发现发布给下一个人。亚当

于 2009-07-30T15:18:42.957 回答