隐藏JFreeChart中的某些类别标签以避免重叠

时间:2012-06-06 11:21:05

标签: jfreechart

我正在使用JFreeChart生成StackedBarChart。根据输入数据,我可以有很多类别(通常在20到40之间),导致标签重叠。 在下面的屏幕截图中,您可以看到包含1到38类别的图表:

chart with categories from 1 to 38, overlapping labels

我想展示一些类别标签作为参考,但不是全部。显示第一个和最后一个,以及每五个之间是完美的。 这可能吗?

我无法更改图表的宽度,并且使标签变小只有在它们太小而无法再读取它们时才起作用... 最后的办法是隐藏整个类别轴......

感谢您的任何建议!

2 个答案:

答案 0 :(得分:4)

一个简单的解决方案是将类别标签设置为背景颜色(在本例中为白色)。

    CategoryPlot plot = (CategoryPlot) chart.getPlot();
    CategoryAxis domainAxis = plot.getDomainAxis();
    domainAxis.setTickLabelPaint("Category 2", Color.white);
    domainAxis.setTickLabelPaint("Category 4", Color.white);

这将产生这样的图表

enter image description here

答案 1 :(得分:2)

您可以在域名轴上使用setVerticalTickLabels(true),如example所示。

附录:糟糕,example引用的是ValueAxis。对于CategoryAxis中使用的StackedBarChart,您可以使用方法setCategoryLabelPositions()获得更大的灵活性。典型用法在BarChartDemo1来源中说明,显示为here