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

Swift Charts:设置Y轴标签固定宽度实现多垂直图表对齐

解决SwiftUI图表垂直堆叠时X轴对齐问题

要解决Y轴标签长度不一导致的X轴错位问题,核心是给Y轴标签设置固定宽度并统一对齐方式,具体实现如下:

基础解决方案

直接自定义AxisValueLabel的内容,通过frame固定宽度并设置右对齐,确保所有标签占据相同宽度:

.chartYAxis {
    AxisMarks(position: .leading) { value in
        AxisGridLine()
        AxisValueLabel {
            // 将Y轴数值转为字符串,固定宽度并右对齐
            Text("\(value.as(Double.self) ?? 0)")
                .frame(width: 60, alignment: .trailing) // 可根据最长标签调整宽度值
        }
    }
}

带数值格式化的进阶方案

如果需要对Y轴数值做格式化(比如保留小数、千分位分隔),可以配合NumberFormatter使用:

// 提前定义数值格式化器
private let yAxisFormatter: NumberFormatter = {
    let formatter = NumberFormatter()
    formatter.numberStyle = .decimal
    formatter.minimumFractionDigits = 0
    formatter.maximumFractionDigits = 2
    return formatter
}()

// 图表的Y轴配置
.chartYAxis {
    AxisMarks(position: .leading) { value in
        AxisGridLine()
        AxisValueLabel {
            let rawValue = value.as(Double.self) ?? 0
            let displayText = yAxisFormatter.string(from: NSNumber(value: rawValue)) ?? "\(rawValue)"
            Text(displayText)
                .frame(width: 70, alignment: .trailing) // 调整宽度适配格式化后的最长文本
        }
    }
}

说明:

  • 固定宽度的数值可以根据你实际最长的Y轴标签长度调整,确保能完全容纳所有标签内容
  • 设置.trailing(右对齐)能让不同长度的标签统一靠右,避免左侧留白不一致导致的宽度偏移

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:24:25