【问题标题】:jFreechart: force to show all tick labels of a Symbolaxis?jFreechart:强制显示符号轴的所有刻度标签?
【发布时间】:2014-08-17 11:49:41
【问题描述】:

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

在默认设置下(值轴的自动范围设置为true),值轴上的标签不完整,取决于Java窗口的大小,显示一些标签,而另一些则省略。似乎规则是先显示一个,然后隐藏固定数量的标签,然后再显示另一个,重复,....也许是为了保存相关性以避免标签文本相互碰撞。

但我想显示所有标签,我想放大热图大小以显示所有标签。

请教我如何: 1) 强制显示 Symbolaxis 的所有标签,或者 2) 放大热图大小以适应所有刻度标签。 3) 减小tick laebl 的字体大小也可以为更多标签节省更多空间。

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

这是我的热图示例:

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

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

非常感谢您的帮助!

【问题讨论】:

    标签: clojure jfreechart incanter


    【解决方案1】:

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

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

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

    【讨论】:

    • 大卫,谢谢你给我指点。我会看看。我正在使用 Clojure。我希望从 Clojure 中找到一种方法。
    • 按照大卫的建议,我找到了一个解决方案,即梳理减小刻度标签字体的大小,同时增加高度以保存绘图对象。如果需要,我可以为它发布 Clojure 脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2020-07-08
    • 1970-01-01
    • 2021-11-17
    • 2012-12-12
    • 2023-01-29
    • 2020-03-27
    相关资源
    最近更新 更多