上周推薦了一款 flutter 開源圖表庫,這次我們同樣推薦一款圖表庫,不過是 SwiftUI 版本的。
自 2019 年蘋果推出 SwiftUI 以來,雖然 SwiftUI 在 iOS UI 開發上還未成為主流,但社區對 SwiftUI 的期待還是蠻大的。各類 SwiftUI 開源庫也不斷涌現。而在許多工具類應用中,圖表又是經常出現的一種展現形式。今天推薦的這款 SwiftUICharts https://github.com/willdale/SwiftUICharts 開源庫,可以適用于 macOS、iOS、watchOS 和 tvOS,并具有內置的輔助功能和本地化功能。
這款開源庫支持多種線性圖、餅圖:
Line Chart
LineChart(chartData: LineChartData)
FilledLineChart(chartData: LineChartData)
MultiLineChart(chartData: MultiLineChartData)
RangedLineChart(chartData: RangedLineChartData)
Bar Charts
BarChart(chartData: BarChartData)
RangedBarChart(chartData: RangedBarChartData)
GroupedBarChart(chartData: GroupedBarChartData)
StackedBarChart(chartData: StackedBarChartData)
Pie Charts
PieChart(chartData: PieChartData)
DoughnutChart(chartData: DoughnutChartData)
另外,這款開源庫還提供了豐富的修飾符,以對圖表做各類美化加強。
整體使用也很簡單,以下是一個實例
struct LineChartDemoView: View {
let data : LineChartData = weekOfData()
var body: some View {
VStack {
LineChart(chartData: data)
.pointMarkers(chartData: data)
.touchOverlay(chartData: data, specifier: "%.0f")
.yAxisPOI(chartData: data,
markerName: "Step Count Aim",
markerValue: 15_000,
labelPosition: .center(specifier: "%.0f"),
labelColour: Color.black,
labelBackground: Color(red: 1.0, green: 0.75, blue: 0.25),
lineColour: Color(red: 1.0, green: 0.75, blue: 0.25),
strokeStyle: StrokeStyle(lineWidth: 3, dash: [5,10]))
.yAxisPOI(chartData: data,
markerName: "Minimum Recommended",
markerValue: 10_000,
labelPosition: .center(specifier: "%.0f"),
labelColour: Color.white,
labelBackground: Color(red: 0.25, green: 0.75, blue: 1.0),
lineColour: Color(red: 0.25, green: 0.75, blue: 1.0),
strokeStyle: StrokeStyle(lineWidth: 3, dash: [5,10]))
.averageLine(chartData: data,
strokeStyle: StrokeStyle(lineWidth: 3, dash: [5,10]))
.xAxisGrid(chartData: data)
.yAxisGrid(chartData: data)
.xAxisLabels(chartData: data)
.yAxisLabels(chartData: data)
.infoBox(chartData: data)
.headerBox(chartData: data)
.legends(chartData: data, columns: [GridItem(.flexible()), GridItem(.flexible())])
.id(data.id)
.frame(minWidth: 150, maxWidth: 900, minHeight: 150, idealHeight: 250, maxHeight: 400, alignment: .center)
}
.navigationTitle("Week of Data")
}
}
當然,這款 SwiftUI 圖表庫目前在 Github 上并不是 star 最多的,star 數是 350+,另一款由 mecid 開源的 SwiftUI 圖表庫 https://github.com/mecid/SwiftUICharts 目前 star 數有 1.1k,以下是圖例: