jFreechart:强制显示Symbolaxis的所有刻度标签?

时间:2014-06-26 14:51:05

标签: clojure jfreechart incanter

我使用(Clojure' s)Incanter的热图来显示(x,y)的轴心值,其中x和y分别代表一些产品和应用。 在热图方面使用xyplot来完成工作。 我使用Symbolaxis分别在x轴和y轴上显示产品和应用程序。

使用默认设置(值轴的自动范围设置为true),值轴上的标签不完整,取决于Java窗口的大小,显示一些lebel,而省略其他一些。似乎规则是显示一个,然后隐藏固定数量的标签,然后显示另一个,重复,....也许,它保存更新状态,以避免标签文本相互冲突。

但是我想要显示所有标签,我想放大热图尺寸以便向所有人展示。

你能告诉我如何: 1)强制显示Symbolaxis的所有标签,或 2)放大热图尺寸以容纳所有刻度标签。 3)减小刻度长度的字体大小也可以为更多标签节省更多空间。

在我看来,JFreechart没有关于这种细微差别的详细文档。我无法找到源代码的位置来搞清楚。

以下是我的热图示例: heat-map that I wish to have all tick labels on the value axis

在上图中,只显示了四分之一的标签。对于部分标签,热图确实很有意义。

注意:我尝试将setAutoRange设置为false,但更糟糕的是,只显示从底部开始的第一行。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

1)要强制显示所有标签,您需要修改refreshTicksHorizontal()类中的refreshTicksVertical()SymbolAxis方法(请注意,您可以点击源代码通过Javadocs,只需单击方法名称)。在这些方法中,搜索评论// don't draw this tick label,您将看到需要更改的代码。

2)JFreeChart总是调整图表绘制以适应指定外部的大小(通过ChartPanel从Swing布局管理器获取其大小,或者由某个调用者询问JFreeChart到以特定大小生成图像,SVG,PDF等。

3)SymbolAxis从Axis基类继承setTickLabelFont()方法,因此您可以使用此方法使标签使用较小的字体。