将图形数据的ladels添加到XYPlot,XYShapeRenderer

时间:2013-06-25 07:28:16

标签: java jfreechart

我正在使用jfreechart,我需要为我的系列数据添加标签。图形上有粗体点,它们需要标签......以下代码不起作用。

screenshot

    XYSeries series = new XYSeries("Average Size");
    series.add(.60, .70);
    XYDataset xyDataset = new XYSeriesCollection(series);

    XYItemRenderer rend = new XYShapeRenderer(); 

    XYItemLabelGenerator  generator = new XYItemLabelGenerator() {

        @Override
        public String generateLabel(XYDataset xyd, int i, int i1) {
            return "Some label?"; 
        }
    };
    //SeriesItemLabelGenerator
    rend.setBaseItemLabelGenerator(generator);
    rend.setBaseItemLabelsVisible(true);

    ItemLabelPosition pos = new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.TOP_LEFT);

    rend.setBasePositiveItemLabelPosition(pos);

1 个答案:

答案 0 :(得分:1)

我认为问题是扩展AbstractXYItemRenderer的XYShapeRenderer(http://www.jfree.org/jfreechart/api/javadoc/src-html/org/jfree/chart/renderer/xy/XYShapeRenderer.html)尚未实现ItemLabelGenerator逻辑。

所以,或者你需要使用另一个渲染器。 例如,XYLineAndShapeRenderer(http://www.jfree.org/jfreechart/api/javadoc/src-html/org/jfree/chart/renderer/xy/XYLineAndShapeRenderer.html)实现它:

// draw the item label if there is one...
if (isItemLabelVisible(series, item)) {
  drawItemLabel(g2, orientation, dataset, series, item, xx, yy,(y1 < 0.0));
}

或者您需要自己扩展XYShapeRenderer并添加标签绘制逻辑,使用任何其他Renderer的源代码作为示例。