0

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

截屏

    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);
4

1 回答 1

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 的源代码作为示例。

于 2013-06-25T08:42:58.137 回答