gpt4 book ai didi

java - JFreeChart:条形图 X 轴标签与大型数据集重叠

转载 作者:行者123 更新时间:2023-12-04 11:01:43 24 4
gpt4 key购买 nike

在使用 JFreeChart 创建具有相对较大数据集的条形图时,我遇到了以下问题:

使用重叠的 X 轴标签生成的条形图。我尝试将标签垂直放置,但仍然没有帮助。请提供解决此问题的最佳方法。代码截取如下:

CategoryDataset categoryDataSet = getBarDataset();
JFreeChart barChart = ChartFactory.createBarChart("TITLE", "X-LABEL","Y-LABEL", categoryDataSet, PlotOrientation.VERTICAL, true, true, false);
barChart.getCategoryPlot().getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_90);
barChart.getCategoryPlot().getDomainAxis().setMaximumCategoryLabelLines(4);
jpg = Image.getInstance(im, null);
document.add(jpg);

更新:
根据@trashgod 的建议,我使用了从 0 到列数的 SlidingCategoryDataset 索引。当列数很大时(此处为 50),X-Label 重叠。当列数设置为较低的数字时,它工作正常。我想找到大列大小的解决方案。重要的是,我需要将图表图像导出为 pdf。请帮助我找到可行的解决方案。谢谢!
    private static void createBarChart() throws DocumentException, IOException {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE_LOCN));
writer.setStrictImageSequence(true);
document.open();
CategoryDataset categoryDataset = createDataset();
int colCount = categoryDataset.getColumnCount();
SlidingCategoryDataset slidingCategoryDataSet = new SlidingCategoryDataset(categoryDataset, 0, colCount);
JFreeChart barChart = ChartFactory.createBarChart("TITLE", "X-LABEL","Y-LABEL", slidingCategoryDataSet,
PlotOrientation.VERTICAL, true, true, false);
barChart.getCategoryPlot().getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_90);
barChart.getCategoryPlot().getDomainAxis().setMaximumCategoryLabelLines(4);
java.awt.Image im = barChart.createBufferedImage(400, 400);
Image jpg = Image.getInstance(im, null);
jpg.scaleToFit(400, 400);
document.add(jpg);
document.close();
writer.close();
}

private static CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int i = 0; i <= 50; i++) {
dataset.addValue(i, "R", "C" + i);
}
return dataset;
}

enter image description here

最佳答案

具有大量类别,通过 setCategoryLabelPositions() 指定垂直标签是最大化易读性的好选择。任意 CategoryLabelPositions 支持。

在交互式图表中, SlidingCategoryDataset , 提到 here , 允许您的应用程序根据需要设置可见类别的计数和起始索引,可能使用 slider 或微调器,如图所示 here .

How can I achieve this in a PDF?…More pixels seems a good idea, but how can we implement that here?



在具有给定类别数量的固定大小上下文中,您可以通过 createBufferedImage() 优化图表图像的大小。 ,如图 here , 或 Image.scaleToFit() .对于更大的数据集,可以以特定领域的方式创建多个链接图表,例如按年份或子公司。

关于java - JFreeChart:条形图 X 轴标签与大型数据集重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58761900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com