在栏外添加标签

时间:2014-08-26 15:44:58

标签: java jfreechart

我已使用以下代码向条形图(显示在条形图内)添加了标签。现在,如果条的宽度小于标签文本的宽度,我想在外面(条形图的右侧)显示标签。

Bar with label inside

BarRenderer renderer = (BarRenderer) plot.getRenderer();
CategoryItemLabelGenerator generator
            = new StandardCategoryItemLabelGenerator("{1}",
                NumberFormat.getInstance());
renderer.setBaseItemLabelGenerator(generator);
renderer.setBaseItemLabelFont(new Font("Arial", Font.BOLD, 7));
renderer.setBaseItemLabelsVisible(true);
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(
            ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER,
            0.0));

我尝试使用setPositiveItemLabelPositionFallback方法,但没有帮助。

ItemLabelPosition p2 = new ItemLabelPosition(
            ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT,
            TextAnchor.CENTER_LEFT, 0.0);
renderer.setPositiveItemLabelPositionFallback(p2);

bar with label cut

1 个答案:

答案 0 :(得分:0)

将您的代码更新为

renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE3, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER, 0.0));

所以整个代码是

BarRenderer renderer = (BarRenderer) plot.getRenderer();
CategoryItemLabelGenerator generator = new StandardCategoryItemLabelGenerator("{1}", NumberFormat.getInstance());
renderer.setBaseItemLabelGenerator(generator);
renderer.setBaseItemLabelFont(new Font("Arial", Font.BOLD, 7));
renderer.setBaseItemLabelsVisible(true);
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE3, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER, 0.0));

ItemLabelPosition p2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, 0.0);
renderer.setPositiveItemLabelPositionFallback(p2);