DPCharts是一个基于Swift的轻量级框架,专门用于在iOS上渲染图表。其主要目标是创建一个用户友好的图表库,遵循iOS代理模式方法。框架中的每个图表仅负责呈现数据,而不是管理数据本身。要管理数据,您需要向图表提供一个数据源对象(一个符合图表数据源协议的对象)。此外,图表管理手势交互,触摸手势事件传递到已配置的代理(一个符合图表代理协议的对象)。
目录
特性亮点
DPCharts提供了许多功能和广泛的定制选项。下面是一个简要的列表,展示了其部分功能
-
5种不同的图表类型
-
图例支持使用特定的视图(见DPLegendView)
-
通过
@IBDesignable
和@IBInspectable
支持Storyboard
-
支持(适用的)动画
-
触摸手势交互
-
高度可定制(颜色、字体、坐标轴定位、间距、内边距等)
-
通过实现数据源协议实现的数据控制
-
通过实现代理协议进行用户交互
-
类似于著名的UIKit视图的API,如UITableView和UICollectionView
可用的图表
柱状图
柱状图是一种使用矩形条来表示不同类别或变量的数据图形表示法。每个条的高度对应其表示的类别或变量的值或频率。
let barChartView = DPBarChartView()
barChartView.datasource = self
barChartView.barStacked = false
barChartView.xAxisTitle = "Title of X-axis"
barChartView.yAxisInverted = false
barChartView.yAxisMarkersWidthRetained = true
barChartView.yAxisTitle = "Title of Y-axis"
堆积柱状图
堆积柱状图是一种使用矩形条来显示堆叠在一起的多类别或变量的图形表示法。每个条状部分表示一个特定的类别或子组,而堆叠条的总高度对应被表示变量的累积值或频率。
let barChartView = DPBarChartView()
barChartView.datasource = self
barChartView.barStacked = true
barChartView.xAxisTitle = "Title of X-axis"
barChartView.yAxisInverted = false
barChartView.yAxisMarkersWidthRetained = true
barChartView.yAxisTitle = "Title of Y-axis"
折线图
折线图是一种使用线条连接数据点的数据图形表示法,通常显示两个或多个变量在特定期间的关系或趋势。
let lineChartView = DPLineChartView()
lineChartView.datasource = self
lineChartView.bezierCurveEnabled = false
lineChartView.areaEnabled = false
lineChartView.xAxisTitle = "Title of X-axis"
lineChartView.yAxisInverted = false
lineChartView.yAxisMarkersWidthRetained = true
lineChartView.yAxisTitle = "Title of Y-axis"
折线图(含区域)
折线图(含区域)是一种结合了传统折线图特性并在其下添加阴影区域的图形表示方法。线条代表变量随时间或连续尺度变化时的趋势或关系,而阴影区域代表累计值或频率。
let lineChartView = DPLineChartView()
lineChartView.datasource = self
lineChartView.bezierCurveEnabled = false
lineChartView.areaEnabled = true
lineChartView.xAxisTitle = "Title of X-axis"
lineChartView.yAxisInverted = false
lineChartView.yAxisMarkersWidthRetained = true
lineChartView.yAxisTitle = "Title of Y-axis"
折线图(含贝塞尔曲线)
带有贝塞尔曲线的折线图是一种特殊的折线图图形表示方法,它使用平滑的曲线连接数据点,显示出变量随时间或连续尺度变化的趋势或关系。贝塞尔曲线是一种数学曲线,为数据点之间提供平滑且视觉上令人愉悦的插值。
let lineChartView = DPLineChartView()
lineChartView.datasource = self
lineChartView.bezierCurveEnabled = true
lineChartView.areaEnabled = false
lineChartView.xAxisTitle = "Title of X-axis"
lineChartView.yAxisInverted = false
lineChartView.yAxisMarkersWidthRetained = true
lineChartView.yAxisTitle = "Title of Y-axis"
折线图(含贝塞尔曲线和区域)
带有贝塞尔曲线和区域的折线图结合了贝塞尔曲线的平滑曲线以及通过曲线下方阴影区域展示累计值或频率的附加视觉表示。
let lineChartView = DPLineChartView()
lineChartView.datasource = self
lineChartView.bezierCurveEnabled = true
lineChartView.areaEnabled = true
lineChartView.xAxisTitle = "Title of X-axis"
lineChartView.yAxisInverted = false
lineChartView.yAxisMarkersWidthRetained = true
lineChartView.yAxisTitle = "Title of Y-axis"
散点图
散点图,也称为散点图,是在二维坐标系统中显示单个数据点的图形表示。它用于显示两个变量之间的关系或相关性。图表上的每个数据点代表两个变量分析中特定的值对。
let scatterChartView = DPScatterChartView()
scatterChartView.datasource = self
scatterChartView.xAxisTitle = "Title of X-axis"
scatterChartView.yAxisInverted = false
scatterChartView.yAxisMarkersWidthRetained = true
scatterChartView.yAxisTitle = "Title of Y-axis"
饼图
饼图是一种圆形的图形表示法,用于直观地显示数据作为饼的切片。图表中的每个切片代表不同的类别或变量,每个切片的大小对应于它所代表的整个部分的比率或百分比。
let pieChartView = DPPieChartView()
pieChartView.datasource = self
pieChartView.donutEnabled = false
饼图(作为环形图)
环形图是一种类似饼图的圆形图形表示,但中心是空的。它通过在饼图中心挖一个洞来形成环状结构。
let pieChartView = DPPieChartView()
pieChartView.datasource = self
pieChartView.donutEnabled = true
pieChartView.donutTitle = "Title"
pieChartView.donutSubtitle = "Brief description"
pieChartView.donutVerticalSpacing = 4.0
热力图
热力图是一种用于在矩阵或表格格式中表示数据的图形表示法,使用颜色编码的单元格或矩形。它在可视化和分析具有多个变量或维度的数据集时特别有用。在热力图中,矩阵中的每个单元格代表变量的特定组合或类别。每个单元格的颜色由其所表示的数据值或大小确定。通常,使用颜色渐变,浅色调或深色调表示较高的或较低的价值。
let heatmapView = DPHeatMapView()
heatmapView.datasource = self
heatmapView.xAxisInverted = false
heatmapView.yAxisInverted = false
带有单元格文本的热力图
带有单元格文本的热力图是一种图形表示法,结合了热力图的视觉元素,同时在每个单独的单元格中包含文本信息。它通常用于显示和分析涉及数值及其对应标签或类别的数据。
let heatmapView = DPHeatMapView()
heatmapView.datasource = self
heatmapView.cellTextEnabled = true
heatmapView.xAxisInverted = false
heatmapView.yAxisInverted = false
需求
- 支持iOS 12+
- 支持Xcode 14+
- 支持Swift 5.7+
安装
Cocoapods
在你的Podfile中添加对DPCharts
框架的依赖
pod 'DPCharts', '~> 1.1.2'
Swift Package Manager
将其作为Swift Package的依赖项添加
dependencies: [
.package(url: "https://github.com/danielepantaleone/DPCharts.git", .upToNextMajor(from: "1.1.2"))
]
运行演示
DPCharts包含一个演示应用程序,展示了它提供的所有图表功能。
- 确保你正在运行受支持的Xcode版本。
- 打开Xcode项目
DPCharts-Demo-iOS/DPCharts-Demo-iOS.xcodeproj
。 - 在模拟器上运行
DPCharts-Demo-iOS
。
文档
此库目前缺少结构化文档。然而,Swift文档可以在Xcode快速帮助中直接访问。目前,由于DPCharts的使用只需将所需的图表子视图添加到ViewController层级结构中,并配置数据源和委托(类似于UITableView和UICollectionView的使用),因此无需全面的文档。
如果您在使用DPCharts时需要帮助,请打开一个问题。
贡献
如果您喜欢此项目,您可以通过以下方式贡献它
许可证
MIT License
Copyright (c) 2023 Daniele Pantaleone
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.