JFreeChart:将列标签移到上方

时间:2013-01-15 16:31:07

标签: jfreechart

enter image description here

正如我在图片中所示,我想将列标签(值434,2562,......)稍微移动一下。有没有办法配置? 我最初的问题是,由于列之间的差异,最后2列上的标签不再可见(实际上它们分别是15和24或stg)。我不知道如何改变它。 谢谢

2 个答案:

答案 0 :(得分: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);

结果是:

Bar chart 3D with labels above the bars

答案 1 :(得分: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));