2014-06-26 55 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脚本。 –

相关问题