The 2.x API is environment-driven and modifier-first.
LineChart()
.chartData([Double]) // categorical
.chartData([(Double, Double)]) // numeric
.chartXRange(0...10) // optional
.chartYRange(0...100) // optionalChartGrid {
LineChart()
}
.chartGridLines(horizontal: 5, vertical: 6)
.chartGridStroke(style: StrokeStyle(lineWidth: 1, dash: [6]), color: .gray)
.chartGridBaseline(true, style: StrokeStyle(lineWidth: 1))AxisLabels {
ChartGrid {
LineChart()
}
}
.chartXAxisLabels(["Q1", "Q2", "Q3", "Q4"])
.chartYAxisLabels(["0", "50", "100"])
.chartXAxisAutoTicks(6, format: .number)
.chartYAxisAutoTicks(5, format: .number)
.chartXAxisLabelRotation(.degrees(-20))
.chartAxisFont(.caption)
.chartAxisColor(.secondary)LineChart()
.chartLineWidth(3)
.chartLineBackground(ColorGradient(.blue.opacity(0.2), .clear))
.chartLineMarks(true, color: ColorGradient(.blue, .purple))
.chartLineStyle(.curved) // or .straight
.chartLineAnimation(true)Recommended build order:
- chart primitive (
LineChart,BarChart,PieChart,RingsChart) - data + ranges (
chartData,chartXRange,chartYRange) - style + chart-specific options
- wrap in
ChartGrid - wrap in
AxisLabels - apply axis/grid interaction modifiers at container level