You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JFreeChart的XYPlot中旋转X轴标签

解决XYPlot中ValueAxis标签45度旋转的问题

要实现ValueAxis的X轴标签45度旋转,核心是通过自定义ValueAxis子类,重写创建刻度的方法来设置标签角度,具体步骤如下:

  • 自定义一个RotatedValueAxis类,继承自ValueAxis,重写createTick方法,在创建ValueTick时指定旋转角度:
public class RotatedValueAxis extends ValueAxis {

    private double labelAngle = Math.toRadians(45); // 45度转为弧度

    public RotatedValueAxis(String label) {
        super(label);
    }

    @Override
    protected ValueTick createTick(double value, String label, double anchorX, double anchorY, double angle) {
        // 传入自定义角度覆盖默认值
        return new ValueTick(value, label, anchorX, anchorY, this.labelAngle);
    }

    // 可添加方法动态调整角度
    public void setLabelAngle(double degrees) {
        this.labelAngle = Math.toRadians(degrees);
        fireChangeEvent();
    }
}
  • 替换XYPlot的X轴为自定义轴:
// 获取你的XYPlot实例
XYPlot plot = ...;
// 创建自定义旋转轴
RotatedValueAxis rotatedXAxis = new RotatedValueAxis("X轴标签");
// 设置轴的基础属性(范围、刻度间隔等)
rotatedXAxis.setRange(0, 100);
rotatedXAxis.setTickUnit(new NumberTickUnit(10));
// 替换原X轴
plot.setDomainAxis(rotatedXAxis);
  • 优化显示:若标签出现重叠,可增大轴的底部边距留出空间:
plot.setDomainAxisBottomMargin(0.15); // 根据实际显示效果调整数值

原理说明

ValueTick确实包含角度属性,但默认ValueAxis的createTick方法会将角度设为0(水平显示)。通过重写该方法,我们可以强制传入目标旋转角度(需转为弧度),让标签按照指定角度绘制。

内容的提问来源于stack exchange,提问作者Peter Kronenberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:09:58