创建具有多条线的折线图

Joh*_*ton 13 swiftui swiftui-charts

查看Apple文档,我发现了一种简单的方法来执行此操作,前提是您的数据集结构正确(我的数据集结构不正确)。我一直在使用一个 CSV 文件,其中包含结构如下的行:

PM2.5 data, PM10 data, DateTime
PM2.5 data, PM10 data, DateTime
...
Run Code Online (Sandbox Code Playgroud)

我已将每一行解析为一个Measurement对象:

struct Measurement: Identifiable {
    var id: String // time of measurement 
    var pm25: Float
    var pm10: Float
}
Run Code Online (Sandbox Code Playgroud)

我天真地认为我可以像这样添加多个线标记(measurements是一个对象数组Measurement):

            Chart(measurements){
                LineMark (
                    x: .value("Time", $0.id),
                    y: .value("PM2.5", $0.pm25)
                )
                
                LineMark (
                    x: .value("Time", $0.id),
                    y: .value("PM2.5", $0.pm10)
                )
            }
Run Code Online (Sandbox Code Playgroud)

但这不会创建多行。任何人都可以提供有关如何在 Swift UI 中使用 Swift Charts 实现此目标的任何建议吗?我在 Stack Overflow 上找到了很多解决方案,但它们适用于 Swift 4 或更早版本,没有适用于 SwiftUI。

wor*_*dog 20

您可以尝试这种简单的方法,使用series以下版本LineMark

Chart(measurements) {
    LineMark(
        x: .value("Time", $0.id),
        y: .value("PM2.5", $0.pm25),
        series: .value("pm25", "A")  // <-- here
    ).foregroundStyle(.red)
    
    LineMark(
        x: .value("Time", $0.id),
        y: .value("PM1.0", $0.pm10),
        series: .value("pm10", "B")   // <-- here
    ).foregroundStyle(.green)
}
Run Code Online (Sandbox Code Playgroud)