SwiftUI Chart如何在同一图表中叠加展示多组图形数据
实现结论
该需求完全可以实现,不需要对两组原始数据源做强制合并。SwiftUI Charts 原生支持在同一个图表容器内添加多组来自不同数据源的标记(Mark),两组折线会自动按照x、y轴的标尺对齐叠加展示。
实现代码
直接将两组折线的绘制逻辑放到同一个Chart闭包内即可,参考实现如下:
Chart { // 绘制第一组数据折线 ForEach(db.objects, id: \.self) { object in LineMark( x: .value("name", object.name), y: .value("value", Int(object.value) ?? 0) ) .foregroundStyle(.blue) } // 绘制第二组数据折线 ForEach(db.objects2, id: \.self) { object2 in LineMark( x: .value("name", object2.name), y: .value("value", Int(object2.value) ?? 0) ) .foregroundStyle(.red) } }
补充说明
- 示例中给两条折线设置了不同的
foregroundStyle颜色,方便视觉上区分两组数据。 - 如果需要自动生成图例区分分组,可以给对应
LineMark添加系列绑定,代码示例:.foregroundStyle(by: .value("数据类型", "第一组数据")),框架会自动识别不同系列生成图例。 - 只要两组数据的x轴、y轴数值维度一致,框架会自动适配坐标范围,不需要手动调整标尺。
内容的提问来源于stack exchange,提问作者Jessi
相关产品推荐
相关产品推荐

