Swift Charts
Basic SwiftUI Charts
Creating a chart is very simple. There is a Chart view and that view has some marks like LineMark views.
struct BasicChart01View: View { var body: some View { VStack { Text("Basic Line Chart") .font(.title) Text("LineMarks with x and y values") Chart { LineMark(x: .value("Key", 5.0), y: .value("Value", 12.0)) LineMark(x: .value("Key", 7.0), y: .value("Value", 17.0)) LineMark(x: .value("Key", 10.0), y: .value("Value", 15.0)) LineMark(x: .value("Key", 11.0), y: .value("Value", 21.0)) LineMark(x: .value("Key", 17.0), y: .value("Value", 23.0)) } } } }

With a combination of point and line marks the data points can be made more prominent.
struct BasicChart02View: View { @State var data: [(Double, Double)] = (1 ... 10).map({ (Double($0), Double($0) * Double($0)) }) var body: some View { VStack { Text("Basic Line Chart") .font(.title) Text("LineMarks and PointMarks with x and y values") Chart { ForEach(data, id: \.0) { item in PointMark(x: .value("key", item.0), y: .value("value", item.1)) .symbol(.circle) LineMark(x: .value("Key", item.0), y: .value("Value", item.1)) } } } } }

The general chart appearance can be styled quite nicely:

The first chart of that screenshot represents the standard formatting.
For the second chart the background has been changed, the foreground color of the data marks adjust and the Y-axis labels are modified.
Chart { ForEach(data, id: \.0) { item in PointMark(x: .value("key", item.0), y: .value("value", item.1)) .symbol(.circle) LineMark(x: .value("Key", item.0), y: .value("Value", item.1)) } } .foregroundStyle(Color.red) .background(content: { Color.yellow.opacity(0.2) }) .chartYAxis { AxisMarks { AxisValueLabel() .font(.body) .foregroundStyle(Color.purple) } }
The third chart shows some custom axis marks:
Chart { ForEach(data, id: \.0) { item in PointMark(x: .value("key", item.0), y: .value("value", item.1)) .symbol(.circle) LineMark(x: .value("Key", item.0), y: .value("Value", item.1)) } } .chartYAxis { AxisMarks(values: .automatic(desiredCount: 10)) } .chartXAxis { AxisMarks(values: [0, 2, 10]) { AxisValueLabel(format: Decimal.FormatStyle.number.precision(.significantDigits(3))) } AxisMarks(values: [0, 1, 2, 3, 4, 5, 10]) { AxisGridLine(stroke: StrokeStyle(lineWidth: 2)).foregroundStyle(Color.green) } }