Swift Charts:.chartYScale 似乎只能以 100 为增量工作?

Gar*_*abo 4 swiftui swiftui-charts

考虑到这是一个心率图表,我试图将图表的 Y 最大刻度设置为 210 (bpm),例如,但.chartYScale(domain: 0 ... 210)只有当我输入 200 或 300 时,它似乎才能正确缩放,中间的任何值都不起作用。这是故意的还是错误?

import SwiftUI
import Charts
import HealthKit

struct TestYAxisRangeChart: View {
    
    let heartRateData = [80.0, 90.0, 120.0, 150.0, 160.0, 140.0, 125.0, 110.0, 88.0]
    
    var body: some View {
        Chart {
            ForEach(heartRateData, id: \.self) { sample in
                LineMark(
                    x: .value("", heartRateData.firstIndex(of: sample)!),
                    y: .value("HR", sample))
                .foregroundStyle(Color.red)
                
            }

        }
        .chartYAxis{
            AxisMarks(position: .leading)
        }
        .frame(height: 300)
        .padding(.horizontal)
        .chartYScale(domain: 0 ... 210)
    }
    
}

struct TestYAxisRangeChart_Previews: PreviewProvider {
    static var previews: some View {
        TestYAxisRangeChart()
    }
}
Run Code Online (Sandbox Code Playgroud)

Asp*_*eri 8

也许你只需要这个(Xcode 14b4 / iOS 16):

let yValues = stride(from: 0, to: 220, by: 10).map { $0 } // << here !!

var body: some View {
    Chart {
        ForEach(heartRateData, id: \.self) { sample in
            LineMark(
                x: .value("", heartRateData.firstIndex(of: sample)!),
                y: .value("HR", sample))
            .foregroundStyle(Color.red)
            
        }

    }
    .chartYAxis{
        AxisMarks(position: .leading, values: yValues)  // << here !!
    }
Run Code Online (Sandbox Code Playgroud)

演示

GitHub 上的测试模块