2012-06-06 90 views
3

我使用JFreeChart生成StackedBarChart。根據輸入數據,我可以有很多類別(通常在20到40之間),導致標籤重疊。 在下面的截圖可以看到與類別圖表從1到38:隱藏JFreeChart中的一些類別標籤以避免重疊

chart with categories from 1 to 38, overlapping labels

我想展示一些類別標籤作爲參考的,但不是全部。顯示第一個和最後一個,以及每五個之間都是完美的。 這可能嗎?

我不能改變圖表的寬度,並且使標籤變小隻有在它們太小以至於無法讀取它們時才起作用... 最後的手段是隱藏整個類別軸...

感謝您的任何建議!

回答

3

一個簡單的解決方案是將Category lables設置爲背景顏色(在本例中爲白色)。

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

+0

可能不是最漂亮的解決方案,但它起作用,我沒有找到更好的解決方案。現在使用它透明的顏色(_新顏色(0,0,0,0)_) – moeTi

+0

@moeTi同意,它不是最漂亮的解決方案 - 另一種解決方案是重寫getTickLabelPaint,但因爲這仍然需要使用類別標籤,而不是基於可用空間的決定。 – GrahamA

2

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

附錄:哎呀,example引用是爲ValueAxis。對於CategoryAxis,如StackedBarChart中所使用的,您可以使用方法setCategoryLabelPositions()更靈活。在BarChartDemo1源文件中說明了典型用法,如here所示。

+1

是的,我也試過了,但它仍然是因爲有太多的類別並不好看。標籤已經很窄(1-2位數字),所以將它們向上或向下翻轉並不會改變任何東西。 – moeTi