使用 chartPlotStyle 精细修改图表绘图区域外观

了解如何使用 chartPlotStyle 修饰器,更加精细的修改 Swift Chart 的外观样式。

使用 chartPlotStyle 精细修改图表绘图区域外观

在之前的文章中,我们介绍了如何使用 Swift Chart 框架,为你的 App 添加图表功能:

使用 Swift Charts 框架为 iOS 应用添加图表
了解如何通过使用 Swift 的 Charts 框架,为你的应用添加动态、交互性强的图表,包括条形图、折线图等不同类型的图表。
自定义 Swift Charts 图表外观
了解如何通过使用 chartYAxis、AxisMarks 及其他修饰器,为 Swift Charts 图表添加更多自定义外观和功能。

这篇文章我们了解如何使用.chartPlotStyle —— Swift Chart 提供的一个修饰器,来更加精细的修改图表绘图区域的样式。

为什么使用 chartPlotStyle

Swift Chart 图表视图本身也是 SwiftUI 视图,所以我们可以直接在 Chart 组件上使用常规的 SwiftUI 视图修改器。

但在 Chart 上应用修饰器,会影响整个 Chart 组件,包括绘图区域、图例(Legend)、轴标记(Axis Label)、标题等。

如果你只想调整图表的绘图区域(即 X 和 Y 轴围成的部分)而不影响其他部分,那就需要使用chartPlotStyle 修饰器。

chartPlotStyle(content:) | Apple Developer Documentation
Configures the plot area of charts.

使用示例

下面这个例子说明了两种方式的区别。

直接在 Chart 组件上使用 SwiftUI 修饰器:

Chart(data) {
    BarMark()
}
.frame(height: ChartConstants.defaultChartHeight)
.background(.mint.opacity(0.03))
.border(.mint)

chartPlotStyle 修饰器内部使用 SwiftUI 修饰器:

Chart(data) {
    BarMark()
}
.chartPlotStyle { plotArea in
    plotArea
       .frame(height: ChartConstants.defaultChartHeight)
       .background(.mint.opacity(0.03))
       .border(.mint)
}

chartPlotStyle 的用法非常简单,你只需要提供一个闭包,在其中定义绘图区域的样式即可。