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

Swift Charts:如何在折线图中高亮填充指定区域?

解决方案

要实现填充灰色区域表示正常范围,你可以用RectangleMark替代原来的两个RuleMark,它能指定Y轴范围并填充颜色,同时记得把填充区域放在折线图下方,避免遮挡折线。

修改后的完整代码如下:

import SwiftUI
import Charts

struct ContentView: View {
    
    struct StepCount: Identifiable {
        let id = UUID()
        let weekday: Date
        let steps: Int
        
        init(day: String, steps: Int) {
            let formatter = DateFormatter()
            formatter.dateFormat = "yyyyMMdd"
            
            self.weekday = formatter.date(from: day) ?? Date.distantPast
            self.steps = steps
        }
    }
    
    let currentWeek: [StepCount] = [
        StepCount(day: "20220717", steps: 4200),
        StepCount(day: "20220718", steps: 15000),
        StepCount(day: "20220719", steps: 2800),
        StepCount(day: "20220720", steps: 10800),
        StepCount(day: "20220721", steps: 12370),
        StepCount(day: "20220722", steps: 9500),
        StepCount(day: "20220723", steps: 3700)
    ]
    
    // 定义正常范围的上下限
    let normalRangeMin = 6000
    let normalRangeMax = 10000
    
    var body: some View {
        VStack {
            Chart {
                // 先添加填充区域,确保在折线下方
                RectangleMark(
                    yStart: .value("正常范围下限", normalRangeMin),
                    yEnd: .value("正常范围上限", normalRangeMax)
                )
                .foregroundStyle(Color.gray.opacity(0.3)) // 半透明灰色填充
                
                ForEach(currentWeek) {
                    LineMark(
                        x: .value("星期", $0.weekday, unit: .day),
                        y: .value("步数", $0.steps)
                    )
                }
            }
        }
        .frame(height: 200)
        .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

关键说明:

  • 使用RectangleMark的yStart和yEnd参数,精准指定填充区域的Y轴范围
  • 设置半透明灰色的foregroundStyle,既突出范围又不会遮挡上方的折线数据
  • 将填充区域的代码放在折线绘制代码之前,确保它被渲染在底层,不会覆盖折线

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:20:25