vom*_*omi 2 charts swift swiftui
这个问题听起来可能很傻,但我花了很多时间尝试却没有弄清楚。
我的数据代表一段时间内的车辆速度,粒度约为秒。因此有很多数据。我想自定义 X 轴(时间),使其仅显示每分钟的标签,或者更好的是每 30 秒显示标签。
这是到目前为止我的代码(正确显示图表,但 X 轴无法工作/显示):
Chart {
ForEach(orderedLocations) { item in
LineMark(x: .value("Date", "\(item.timestamp!)"),
y: .value("Speed", item.groundSpeed),
series: .value("Ground Speed", "A"))
.interpolationMethod(.catmullRom)
.foregroundStyle(.blue)
AreaMark(x: .value("Date", "\(item.timestamp!)"),
y: .value("Speed", item.groundSpeed),
series: .value("Speed", "A"))
}
}
.chartXAxis {
AxisMarks(values: .automatic(minimumStride: 60)) { date in
AxisValueLabel(format: .dateTime.minute())
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码有什么问题?
这是因为 x 值必须是类型Date并且不能插入 a 中String:
LineMark(x: .value("Date", item.date),
y: .value("Speed", item.groundSpeed),
series: .value("Ground Speed", "A"))
Run Code Online (Sandbox Code Playgroud)
所以你必须将你的时间戳转换为Date第一个。
因为AxisMark您可以以分钟为单位跨步以每分钟显示一个标签:
AxisMarks(values: .stride(by: .minute)) { date in
AxisValueLabel(format: .dateTime.minute())
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |