所有开源包
界面Swift

SwiftUI-Data-Visualization

面向 iOS 和 macOS SwiftUI 的统计、金融和实时图表,建立在 Swift Charts 之上。

7星标数最新版本: v2.0.1更新时间: 2026年10月15日
支持平台:iOS 17macOS 14

许可证: MIT

一个无依赖的 Swift package,包含十种图表 view——时间序列、histogram、箱线图、带趋势线的散点图、candlestick、瀑布图、热力图、雷达图、treemap 和实时行情——以及背后公开的分析类型:Histogram、BoxPlotSummary、LinearRegression、MovingAverage、NiceScale、TreemapLayout 和 Largest-Triangle-Three-Buckets 降采样算法。非有限数值的输入会被忽略,极端值会按文档中说明的上限绘制,测试套件会用这些极端输入渲染每一种图表。

功能特性

  • TimeSeriesChart 用 LTTB 把每个序列降采样到 1,000 个点,绘制移动平均线,可在可见时间窗口内滚动,并报告所选日期
  • 统计图表:HistogramChart(Sturges、Freedman–Diaconis、固定宽度或固定数量),带 Tukey whisker 的 BoxPlotChart,带最小二乘趋势线的 ScatterChart
  • 金融图表:带 Candle.aggregate(_:interval:) 的 CandlestickChart,以及带合计值的 WaterfallChart
  • HeatmapChart、RadarChart 和一个 squarified 算法的 TreemapChart;雷达图和行情图用 Canvas 绘制,treemap 用纯 SwiftUI view 绘制;三者都为 VoiceOver 附加了 AudioGraphDescriptor
  • 通过 RingBuffer 和可观察的 LiveSeries 为 LiveTickerChart 提供实时数据
  • 分析层是公开且 Sendable 的,因此可以在你自己的 Chart 中使用,或在 main actor 之外使用
  • 通过 .chartPalette(_:) 设置的配色方案,包括一种适合色盲用户的配色;ChartExport 可以把图表渲染为 PNG 数据或 CGImage
  • 一个把 nan、无穷大、Int.max、极端区间和极端日期传给分析类型,并用它们渲染每种图表的测试套件

快速开始

swift
1import SwiftUI
2import SwiftUIDataVisualization
3 
4struct ContentView: View {
5 let steps = TimeSeries(
6 name: "Steps",
7 values: [4_200, 8_100, 6_900, 10_400, 7_800, 12_100, 9_300],
8 start: .now.addingTimeInterval(-6 * 86_400),
9 interval: 86_400
10 )
11 
12 var body: some View {
13 TimeSeriesChart(steps)
14 .frame(height: 240)
15 .padding()
16 }
17}

安装

Swift Package Manager

swift
1dependencies: [
2 .package(url: "https://github.com/muhittincamdali/SwiftUI-Data-Visualization.git", from: "2.0.0")
3],
4targets: [
5 .target(name: "YourApp", dependencies: [
6 .product(name: "SwiftUIDataVisualization", package: "SwiftUI-Data-Visualization")
7 ])
8]

Xcode

text
1https://github.com/muhittincamdali/SwiftUI-Data-Visualization.git

截图

两台服务器的时间序列图表,带虚线移动平均线,浅色模式
两台服务器的时间序列图表,带虚线移动平均线,深色模式
iOS 和 Android 的延迟 histogram 和箱线图,浅色模式
iOS 和 Android 的延迟 histogram 和箱线图,深色模式
身高和体重的散点图及趋势线,浅色模式
身高和体重的散点图及趋势线,深色模式
六小时 candle 的 candlestick 图表和利润瀑布图,浅色模式
六小时 candle 的 candlestick 图表和利润瀑布图,深色模式
按星期和小时统计的 commit 热力图,带有数值标注,浅色模式
按星期和小时统计的 commit 热力图,带有数值标注,深色模式
比较两个模型的雷达图和存储空间 treemap,浅色模式
比较两个模型的雷达图和存储空间 treemap,深色模式
ChartGallery 示例应用在 iPhone 模拟器上的时间序列界面,浅色模式
ChartGallery 示例应用在 iPhone 模拟器上的时间序列界面,深色模式
ChartGallery 示例应用在 iPhone 模拟器上的实时数据界面,浅色模式
ChartGallery 示例应用在 iPhone 模拟器上的实时数据界面,深色模式

时间线

  1. 仓库以 bar、pie、散点图和 candlestick view 开放

  2. 发布 1.0.0 版本;其源码无法用当前版本的 Xcode 构建

  3. 移除了旧模块,将 package 精简为一个小型占位代码

  4. 在 Swift Charts 基础上重建为 2.0.0,迁入了已归档的 SwiftUI-Charts-Pro 中经过测试的算法和图表

  5. 2.0.1:在传给 Swift Charts 之前,极端大的有限数值会被夹断;同一日期的所有 candle 都会被绘制

相关链接

已合并的仓库

相关文章

阅读文章