-
Notifications
You must be signed in to change notification settings - Fork 0
/
Charts_AreaMark.swift
64 lines (53 loc) · 1.63 KB
/
Charts_AreaMark.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//
// Charts_AreaMark.swift
// SwiftChartDemo
//
// Created by Shunzhe on 2022/06/09.
//
import SwiftUI
import Charts
struct ChartEntry_minMax: Identifiable {
var title: String
var minY: Int
var maxY: Int
var averageY: Int {
return (minY + maxY) / 2
}
var id: String { return title }
}
struct Charts_AreaMark: View {
@State var data: [ChartEntry_minMax] = [
.init(title: "Today", minY: 15, maxY: 27),
.init(title: "Tomorrow", minY: 17, maxY: 28),
.init(title: "Saturday", minY: 18, maxY: 24),
.init(title: "Sunday", minY: 16, maxY: 25),
.init(title: "Monday", minY: 14, maxY: 26),
.init(title: "Tuesday", minY: 17, maxY: 20),
.init(title: "Wednesday", minY: 17, maxY: 23)
]
var body: some View {
Form {
Chart {
ForEach(data) { dataPoint in
AreaMark(
x: .value("Category", dataPoint.title),
yStart: .value("Lowest temperature", dataPoint.minY),
yEnd: .value("Highest temperature", dataPoint.maxY)
)
.opacity(0.3)
LineMark(
x: .value("Category", dataPoint.title),
y: .value("Average", dataPoint.averageY)
)
}
}
.frame(height: 200)
}
.navigationTitle("Temperature")
}
}
struct Charts_AreaMark_Previews: PreviewProvider {
static var previews: some View {
Charts_AreaMark()
}
}