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

如何将SwiftUI Chart中的RuleMark置于BarMark下方?

解决柱形图平均线置于柱体后方的问题

在SwiftUI Chart中,标记的绘制层级由代码添加顺序决定:先添加的标记会被后添加的标记覆盖。你当前代码先添加BarMark再添加RuleMark,导致平均线显示在柱体上方。

只需调整两者顺序,把RuleMark放在BarMark之前,就能让平均线处于柱体后方:

struct ContentView: View {
    var body: some View {
        debugChartAvgLine
    }

    var debugChartAvgLine: some View {
        let salesData: [(String, Int)] = [
            ("Jan", 100),
            ("Feb", 150),
            ("Mar", 100),
            ("Apr", 50),
            ("May", 70),
            ("June", 140)
        ]
        let avg = salesData.map{$0.1}.reduce(0, +) / salesData.count
        
        return Chart {
            // 先添加平均线,使其处于底层
            RuleMark(y: .value("avg sale", avg))
                .lineStyle(StrokeStyle(lineWidth: 1, dash: [5]))
                .foregroundStyle(.red)
            
            // 后添加柱体,覆盖在平均线之上
            ForEach(salesData, id: \.0) {  month, sales in
                BarMark(
                    x: .value("Month", month),
                    y: .value("Amount", sales)
                )
            }
        }
        .frame(height: 300)
    }
}

修改后,红色虚线平均线会被蓝色柱体遮挡,仅显示柱体间隙部分,实现置于柱体后方的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:42:35