В приложении SwiftUI я пытаюсь передать массив значений Y в структуру Swift Charts, чтобы нарисовать линейный график. Я хотел бы создать значения X на основе длины или количества данных Y. Я попробовал подход, показанный ниже, но он не работает, потому что Charts хочет, чтобы данные были в виде массива структур. Есть ли способ передать массивы непосредственно в структуру диаграмм?
import SwiftUI
import Charts
struct ContentView: View {
let ydata = [1, 4.5, 3, 6, 7, 5.2, 9, 12.5]
let xdata = Array(0..<ydata.count)
let data = [xdata, ydata]
var body: some View {
Chart(data) {
LineMark(
x: .value("X values", $0),
y: .value("Y values", $1)
)
}
}
}
Вы можете использовать массив кортежей, здесь я использую вычисляемое свойство для данных
var data: [(Int, Double)] {
Array(zip(Array(0..<ydata.count), ydata))
}
При использовании кортежа нам нужно сообщить Chart
, что такое идентификатор, поэтому использование data
немного отличается
var body: some View {
Chart(data, id: \.0) { tuple in
LineMark(
x: .value("X values", tuple.0),
y: .value("Y values", tuple.1)
)
}
}
Это работает. Спасибо вам за помощь. Вы также можете использовать
$0
и$1
для значений x и y.