2014-06-26 108 views
0

我使用(Clojure's)Incanter的熱圖來顯示(x,y)的樞軸值,其中x和y分別代表某些產品和應用。 在熱圖中使用xyplot來完成這項工作。 我使用Symbolaxis分別在x軸和y軸上顯示產品和應用程序。jFreechart:強制顯示Symbolaxis的所有刻度標籤?

使用默認設置(值軸的自動範圍設置爲true)時,數值軸上的標籤不完整,取決於Java窗口的大小,顯示了一些lebels,而省略了其他一些標籤。看起來規則是顯示一個,然後隱藏固定數量的標籤,然後顯示另一個,重複,....也許,這是爲了保存relestate,以避免標籤文本相互碰撞。

但我想要顯示所有標籤,我想放大熱圖大小以顯示所有標籤。

請教我如何: 1)強制顯示Symbolaxis的所有標籤,或者 2)放大熱圖尺寸以容納所有刻度標籤。 3)縮小勾號字體的大小也可以爲更多標籤節省更多空間。

在我看來,JFreechart沒有這種細微差別的詳細文檔。我無法找到源代碼的位置來找出。

這是我的熱圖的樣品: heat-map that I wish to have all tick labels on the value axis

在attcahed該圖中,僅標籤的四分之一被示出。對於部分標籤,熱圖確實很有意義。

注:我試圖將AutoRange設置爲false,但更糟的是,只顯示從底部開始的第一行。

非常感謝您的幫助!

回答

1

1)要強制所有的標籤顯示,您將需要修改的SymbolAxis類(注意,您可以通過點擊通過的Javadoc源代碼中的refreshTicksHorizontal()refreshTicksVertical()方法,只需點擊方法名) 。在這些方法中,搜索評論// don't draw this tick label,您將看到需要更改的代碼。

2)JFreeChart總是適應指定的圖表繪製,以適應尺寸外部(或者通過從一個Swing佈局管理器得到它的大小,或通過一些呼叫者詢問的JFreeChart以生成圖像的ChartPanel,SVG,PDF等在一個特定的大小)。

3)SymbolAxis繼承了Axis基類中的setTickLabelFont()方法,因此您可以使用它來使標籤使用更小的字體。

+0

大衛,謝謝你給我指針。我會看一看。我正在使用Clojure。我希望從Clojure找到一條路。 –

+0

遵循David的建議,我找到了一種梳理減少刻度標籤字體大小的解決方案,並且還增加了保存繪圖對象的高度。如果需要,我可以爲它發佈Clojure腳本。 –

相關問題