在以下情况下尝试这种方法
你用一个
Chart
有两个
ForEach
例如:
Chart {
ForEach(payments, id: \.date) { payment in
BarMark(
x: .value("Date", payment.date, unit: .day), // <-- adjust as required
y: .value("Amount", payment.amount)
)
}
ForEach(payments, id: \.0) { payment in
LineMark(
x: .value("Date", payment.date, unit: .day), // <-- adjust as required
y: .value("Amount", payment.amount)
)
}
}
这是我的完整测试代码,显示了如何
BarMark
在一起
与
LineMark
在顶部。
struct ChartData: Identifiable {
let id = UUID()
let value: Double
let date: Date
}
struct ContentView: View {
let chartData: [ChartData] = (0..<10).map { index in
ChartData(value: Double.random(in: 1...10) ,
date: Date().addingTimeInterval(Double(index) * 60 * 60 * 24) )
}
var body: some View {
Chart {
ForEach(chartData) { data in
BarMark(
x: .value("Date", data.date, unit: .day),
y: .value("Value", data.value)
)
.foregroundStyle(Color.blue)
}
ForEach(chartData) { data in
LineMark(
x: .value("Date", data.date, unit: .day),
y: .value("Value", data.value)
)
.foregroundStyle(Color.red)
}
}
.chartLegend(.hidden)
.chartXAxis(.hidden)
.chartYAxis(.hidden)
}
}