JFreeChart: 移动柱形图标签至顶部

3

在这里输入图片描述

正如我在图片中所展示的,我想将列标签(值为434、2562等)向上移动一点。有没有什么方法可以配置它?我的初始问题是由于列之间的差异,最后两列的标签不再可见(实际上它们是15和24或类似的)。我不知道如何更改。谢谢。


你可能想要查看ItemLabelDemo*.java示例,这些示例可以在JWS演示中找到,还有在指南中提到的DrawStringDemo - trashgod
对不起,我没有看到ItemLabelDemo。 - Madrugada
它们位于“杂项 > 项目标签”下。 - trashgod
2个回答

3
你可以使用 BarRenderer3D.setSeriesPositiveItemLabelPosition
例如:
  DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  dataset.addValue(51.0, "Series 1", "key1");
  dataset.addValue(44.3, "Series 1", "key2");

  // create the chart...
  JFreeChart chart = ChartFactory.createBarChart3D("Demo","Category","Value",dataset,PlotOrientation.VERTICAL,false,true,false);


  CategoryPlot plot = chart.getCategoryPlot();

  CategoryAxis domainAxis = plot.getDomainAxis();
  domainAxis.setVisible(false);

  NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
  rangeAxis.setUpperMargin(0.15);

  BarRenderer3D renderer = (BarRenderer3D) plot.getRenderer();
  CategoryItemLabelGenerator generator = new StandardCategoryItemLabelGenerator();
  renderer.setSeriesItemLabelGenerator(0, generator);
  renderer.setSeriesItemLabelsVisible(0, true);
  renderer.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_CENTER));
  renderer.setItemLabelAnchorOffset(10);

结果如下:

带有标签的3D条形图


1
CategoryPlot plot = (CategoryPlot) chart.getPlot();

BarRenderer renderer = (BarRenderer) plot.getRenderer();

renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.TOP_CENTER,TextAnchor.HALF_ASCENT_CENTER,0D));

对于X轴值为两列(例如team1,team2或Completed,Incompleted),将最后一行更改为renderer.setSeriesPositiveItemLabelPosition(0,new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER,TextAnchor.HALF_ASCENT_CENTER,0D));。更改的方法已经变化,第一个参数为0表示第一列,第二次为1,以此类推。这对我有用。 - Aniket Kulkarni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接