gpt4 book ai didi

java - 自由图表 |如何在每个栏的顶部添加百分比并设置域轴(X 轴)刻度标签的格式?

转载 作者:行者123 更新时间:2023-12-03 19:09:50 25 4
gpt4 key购买 nike

我正在使用 JFreeChart以下是我开发的图表和相关代码的截图。

JFreeChart

    private void getBarChart(List<Data> data) {
JFreeChart barChart = ChartFactory.createBarChart("", "", "", createDataset(data), PlotOrientation.VERTICAL, false, true, false);
CategoryPlot plot = barChart.getCategoryPlot();
plot.getRenderer().setSeriesPaint(0, new Color(7, 43, 97));

barChart.getCategoryPlot().getRangeAxis().setLowerBound(0);
barChart.getCategoryPlot().getRangeAxis().setUpperBound(1);
NumberAxis xAxis2 = (NumberAxis) barChart.getCategoryPlot().getRangeAxis();
xAxis2.setNumberFormatOverride(NumberFormat.getPercentInstance());

plot.getRenderer().setSeriesItemLabelGenerator(0, new StandardCategoryItemLabelGenerator());
plot.getRenderer().setSeriesItemLabelsVisible(1, true);
plot.getRenderer().setBaseItemLabelsVisible(true);
plot.getRenderer().setBaseSeriesVisible(true);
barChart.getCategoryPlot().setRenderer(plot.getRenderer());


BarRenderer.setDefaultBarPainter(new StandardBarPainter());
((BarRenderer) plot.getRenderer()).setBarPainter(new StandardBarPainter());

BufferedImage image = new BufferedImage(650, 250, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = image.createGraphics();
g2.setRenderingHint(JFreeChart.KEY_SUPPRESS_SHADOW_GENERATION, true);
Rectangle r = new Rectangle(0, 0, 650, 250);
barChart.draw(g2, r);
BufferedImage chartImage = barChart.createBufferedImage(600, 400, null);
}

预期的图表应如下所示。 enter image description here

问题 1.) 如何按照预期的图形格式化 x 轴标签?(barChart.getCategoryPlot().getDomainAxis() 中的类别标签或 TickLabels)

问题 2.) 显示在每个条形 (SeriesItemLabels) 顶部的值需要使用类似于 y 轴的百分比标记 (%) 进行格式化。 (我也认为,就像我在 xAxis2.setNumberFormatOverride 中所做的那样,这些值将自动乘以 100%。现在它只显示十进制值)。如何做到这一点?

请帮帮我。谢谢。

最佳答案

BarChartDemo1.java 开始工作, 更新为 JFreechart 1.5 , 以下替代方案如下所示。

  1. 如图herehere ,您可以在域轴上调用 setCategoryLabelPositions() 并使用 CategoryLabelPositions.createUpRotationLabelPositions 微调角度。下面的示例逆时针旋转 π/4 弧度或 45°。

    CategoryAxis domainAxis = plot.getDomainAxis();
    domainAxis.setCategoryLabelPositions(
    CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 4.0));
  2. 显示 here ,您可以构建自定义 StandardCategoryItemLabelGenerator,但您可能想要使用 ArgumentIndex {3} ,这是列总数的百分比值,以及合适的 NumberFormat

    renderer.setDefaultItemLabelGenerator(
    new StandardCategoryItemLabelGenerator(
    "{3}", NumberFormat.getPercentInstance()));
    renderer.setDefaultItemLabelsVisible(true);

bar chart

关于java - 自由图表 |如何在每个栏的顶部添加百分比并设置域轴(X 轴)刻度标签的格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53963201/

25 4 0