SwiftUICharts

用于轻松显示图表的 Swift 包。

V2 Beta 发布 🎉🎉🎉

V2 专注于提供一个强大且易于使用的基础,您可以在此基础上构建精美的自定义图表。它提供基本的构建块,例如图表视图(条形图、饼图、折线图和环形图)、网格视图、卡片视图、用于显示当前图表值的交互式标签。您可以决定是构建一个功能齐全的交互式视图,还是仅显示一个基本的图表。

它支持交互和动画

它是完全可定制的,并且可以与原生 SwiftUI 元素很好地协同工作

原始(稳定)版本

用法

它支持

Slack

加入我们的 Slack 频道进行日常对话和更深入的了解

Slack 邀请链接

安装

它需要 iOS 13 和 Xcode 11!

在 Xcode 中,转到 File -> Swift Packages -> Add Package Dependency 并粘贴仓库的 URL:https://github.com/AppPear/ChartView

用法

在您想要使用的文件中导入该包:import SwiftUICharts

您可以通过将图表视图添加到父视图来显示图表

演示

添加了一个示例项目,带有 iOS, watchOS 目标:https://github.com/AppPear/ChartViewDemo

折线图

具有多条线的 LineChartView! 此功能的首次发布,目前已禁用交互,我将研究如何最好地通过单次触摸与多条线进行交互。

用法

MultiLineChartView(data: [([8,32,11,23,40,28], GradientColors.green), ([90,99,78,111,70,60,77], GradientColors.purple), ([34,56,72,38,43,100,50], GradientColors.orngPink)], title: "Title")

渐变色现在位于 GradientColor 结构下,您可以通过 GradientColor(start: Color, end: Color) 创建自己的渐变

可用的预设渐变

名为 LineView 的全屏视图!!!

 LineView(data: [8,23,54,32,12,37,7,23,43], title: "Line chart", legend: "Full screen") // legend is optional, use optional .padding()

自动适应暗黑模式

您可以通过指定添加自定义暗黑模式样式

let myCustomStyle = ChartStyle(...)
let myCutsomDarkModeStyle = ChartStyle(...)
myCustomStyle.darkModeStyle = myCutsomDarkModeStyle

折线图是交互式的,因此您可以拖动以显示数据点

您可以使用以下代码添加折线图

 LineChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", legend: "Legendary") // legend is optional

通过添加到 Initialiser 来关闭阴影:dropShadow: false

条形图

[新功能] 您还可以沿着每个条的值和点显示标签,以更好地描述您的数据! 条形图是交互式的,因此您可以拖动以显示数据点

您可以使用以下代码添加条形图

标签和点

 BarChartView(data: ChartData(values: [("2018 Q4",63150), ("2019 Q1",50900), ("2019 Q2",77550), ("2019 Q3",79600), ("2019 Q4",92550)]), title: "Sales", legend: "Quarterly") // legend is optional

仅点

 BarChartView(data: ChartData(points: [8,23,54,32,12,37,7,23,43]), title: "Title", legend: "Legendary") // legend is optional

ChartData 结构将值存储在数据对(实际上是元组)中:(String,Double)

您可以通过多种方式初始化 ChartData

您可以添加不同的格式

BarChartView(data: ChartData(points: [8,23,54,32,12,37,7,23,43]), title: "Title", form: ChartForm.small)

对于浮点数,您可以设置自定义说明符

BarChartView(data: ChartData(points:[1.23,2.43,3.37]) ,title: "A", valueSpecifier: "%.2f")

对于整数,您可以通过传递来禁用:valueSpecifier: "%.0f"

您可以通过在 initialiser 中传入自定义图像来在右上角设置自定义图像:cornerImage:Image(systemName: "waveform.path.ecg")

通过添加到 Initialiser 来关闭阴影:dropShadow: false

您可以使用 ChartStyle 对象自定义图表的样式

可定制

 let chartStyle = ChartStyle(backgroundColor: Color.black, accentColor: Colors.OrangeStart, secondGradientColor: Colors.OrangeEnd, chartFormSize: ChartForm.medium, textColor: Color.white, legendTextColor: Color.white )
 ...
 BarChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", style: chartStyle)

您可以访问内置样式

 BarChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", style: Styles.barChartMidnightGreen)

所有样式都可用作预设

您可以使用 ChartForm 对象自定义图表的大小

ChartForm

BarChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", form: ChartForm.small)

您可以选择在完成手势后是否动画条。

如果您想在完成手势后动画返回移动,则将 animatedToBack 设置为 true

WatchOS 支持条形图

饼图

您可以使用以下代码添加饼图

 PieChartView(data: [8,23,54,32], title: "Title", legend: "Legendary") // legend is optional

通过添加到 Initialiser 来关闭阴影:dropShadow: false