SwiftUIでグラフを表示する
SwiftUIでグラフを表示する方法です。
ContentView.swift
import SwiftUI
import Charts
struct ContentView: View {
var body: some View {
ScrollView {
VStack {
// Vertical Graph
Chart {
BarMark(
x: .value("Name", "Snorlax"),
y: .value("Weight", 460.0)
)
.foregroundStyle(Color.cyan)
BarMark(
x: .value("Name", "Psyduck"),
y: .value("Weight", 19.6)
)
.foregroundStyle(Color.yellow)
BarMark(
x: .value("Name", "Arcanine"),
y: .value("Weight", 155.0)
)
.foregroundStyle(Color.orange)
}
.frame(height: 300)
.padding()
// Horizontal Graph
Chart {
BarMark(
x: .value("Weight", 460.0),
y: .value("Name", "Snorlax")
)
.foregroundStyle(Color.cyan)
BarMark(
x: .value("Weight", 19.6),
y: .value("Name", "Psyduck")
)
.foregroundStyle(Color.yellow)
BarMark(
x: .value("Weight", 155.0),
y: .value("Name", "Arcanine")
)
.foregroundStyle(Color.orange)
}
.frame(height: 300)
.padding()
// IT Slill
VStack {
Chart {
// Snorlax
BarMark(
x: .value("Name", "Snorlax"),
y: .value("Value", 80)
)
.position(by: .value("Category", "AWS"))
.foregroundStyle(Color.cyan)
BarMark(
x: .value("Name", "Snorlax"),
y: .value("Value", 70)
)
.position(by: .value("Category", "iOS"))
.foregroundStyle(Color.yellow)
BarMark(
x: .value("Name", "Snorlax"),
y: .value("Value", 50)
)
.position(by: .value("Category", "Python"))
.foregroundStyle(Color.orange)
BarMark(
x: .value("Name", "Snorlax"),
y: .value("Value", 20)
)
.position(by: .value("Category", "SQL"))
.foregroundStyle(Color.green)
// Psyduck
BarMark(
x: .value("Name", "Psyduck"),
y: .value("Value", 60)
)
.position(by: .value("Category", "AWS"))
.foregroundStyle(Color.cyan)
BarMark(
x: .value("Name", "Psyduck"),
y: .value("Value", 10)
)
.position(by: .value("Category", "iOS"))
.foregroundStyle(Color.yellow)
BarMark(
x: .value("Name", "Psyduck"),
y: .value("Value", 80)
)
.position(by: .value("Category", "Python"))
.foregroundStyle(Color.orange)
BarMark(
x: .value("Name", "Psyduck"),
y: .value("Value", 60)
)
.position(by: .value("Category", "SQL"))
.foregroundStyle(Color.green)
}
.frame(height: 300)
HStack(spacing: 12) {
HStack(spacing: 4) {
Circle()
.frame(width: 16, height: 16)
.foregroundColor(Color.cyan)
Text("AWS")
}
HStack(spacing: 4) {
Circle()
.frame(width: 16, height: 16)
.foregroundColor(Color.yellow)
Text("iOS")
}
HStack(spacing: 4) {
Circle()
.frame(width: 16, height: 16)
.foregroundColor(Color.orange)
Text("Python")
}
HStack(spacing: 4) {
Circle()
.frame(width: 16, height: 16)
.foregroundColor(Color.green)
Text("SQL")
}
}
}
.padding()
// Stock Chart
Chart {
LineMark(
x: .value("Weak", "Mon"),
y: .value("Sales", 2000)
)
AreaMark(x: .value("Weak", "Mon"),
yStart: .value("MinSales", 1000),
yEnd: .value("MaxSales", 3000)
)
.opacity(0.3)
LineMark(
x: .value("Weak", "Tue"),
y: .value("Sales", 4000)
)
AreaMark(x: .value("Weak", "Tue"),
yStart: .value("MinSales", 2500),
yEnd: .value("MaxSales", 4300)
)
.opacity(0.3)
LineMark(
x: .value("Weak", "Wed"),
y: .value("Sales", 3000)
)
AreaMark(x: .value("Weak", "Wed"),
yStart: .value("MinSales", 2300),
yEnd: .value("MaxSales", 3600)
)
.opacity(0.3)
LineMark(
x: .value("Weak", "Thu"),
y: .value("Sales", 4500)
)
AreaMark(x: .value("Weak", "Thu"),
yStart: .value("MinSales", 4000),
yEnd: .value("MaxSales", 4800)
)
.opacity(0.3)
LineMark(
x: .value("Weak", "Fri"),
y: .value("Sales", 3500)
)
AreaMark(x: .value("Weak", "Fri"),
yStart: .value("MinSales", 2500),
yEnd: .value("MaxSales", 4300)
)
.opacity(0.3)
}
.frame(height: 300)
.padding()
}
}
}
}
