Currently with the below default configuration from SwiftUI Charts, it is plotting top to bottom, i.e. minimum to maximum top to bottom. See the attached picture. I want the axis flipped so its plotting bottom to top.
struct HeartRateChart: View {
let dateInterval: DateInterval
let segments: [HeartRateSegment]
let maxHeartRate: CGFloat
let minHeartRate: CGFloat
init(dateInterval: DateInterval, segments: [HeartRateSegment], maxHeartRate: Int, minHeartRate: Int) {
self.dateInterval = dateInterval
self.segments = segments
self.maxHeartRate = CGFloat(maxHeartRate)
self.minHeartRate = CGFloat(minHeartRate)
}
var body: some View {
Chart {
ForEach(segments, id: .startDate) { segment in
let yStart: CGFloat = CGFloat(segment.samples.min()?.heartRate ?? 0)
let yEnd: CGFloat = CGFloat(segment.samples.max()?.heartRate ?? 0)
RuleMark(x: .value("startDate", segment.startDate), yStart: yStart, yEnd: yEnd)
}
}
.chartYScale(domain: [minHeartRate, maxHeartRate], range: minHeartRate...maxHeartRate)
.aspectRatio(contentMode: .fit)
.chartYAxis {
AxisMarks(values: [minHeartRate, maxHeartRate])
}
.chartXScale(domain: [dateInterval.start, dateInterval.end])
.chartPlotStyle { content in
content.frame(height: 200)
}
.padding()
}
}