我使用(Clojure' s)Incanter的热图来显示(x,y)的轴心值,其中x和y分别代表一些产品和应用。 在热图方面使用xyplot来完成工作。 我使用Symbolaxis分别在x轴和y轴上显示产品和应用程序。
使用默认设置(值轴的自动范围设置为true),值轴上的标签不完整,取决于Java窗口的大小,显示一些lebel,而省略其他一些。似乎规则是显示一个,然后隐藏固定数量的标签,然后显示另一个,重复,....也许,它保存更新状态,以避免标签文本相互冲突。
但是我想要显示所有标签,我想放大热图尺寸以便向所有人展示。
你能告诉我如何: 1)强制显示Symbolaxis的所有标签,或 2)放大热图尺寸以容纳所有刻度标签。 3)减小刻度长度的字体大小也可以为更多标签节省更多空间。在我看来,JFreechart没有关于这种细微差别的详细文档。我无法找到源代码的位置来搞清楚。
以下是我的热图示例:
在上图中,只显示了四分之一的标签。对于部分标签,热图确实很有意义。
注意:我尝试将setAutoRange设置为false,但更糟糕的是,只显示从底部开始的第一行。
非常感谢你的帮助!
答案 0 :(得分:1)
1)要强制显示所有标签,您需要修改refreshTicksHorizontal()类中的refreshTicksVertical()和SymbolAxis方法(请注意,您可以点击源代码通过Javadocs,只需单击方法名称)。在这些方法中,搜索评论// don't draw this tick label
,您将看到需要更改的代码。
2)JFreeChart总是调整图表绘制以适应指定外部的大小(通过ChartPanel从Swing布局管理器获取其大小,或者由某个调用者询问JFreeChart到以特定大小生成图像,SVG,PDF等。
3)SymbolAxis从Axis基类继承setTickLabelFont()方法,因此您可以使用此方法使标签使用较小的字体。