すべてのオープンソースパッケージ
UISwift

SwiftUI-Data-Visualization

iOS と macOS の SwiftUI 向けの、統計・金融・ライブデータのチャート。Swift Charts の上に構築されています。

7スター数最新リリース: v2.0.1更新日: 2026年10月15日
対応プラットフォーム:iOS 17macOS 14

ライセンス: MIT

依存関係のない Swift パッケージで、10種類のチャートビュー — time series、histogram、box plot、トレンドラインつきの scatter、candlestick、waterfall、heatmap、radar、treemap、ライブ ticker — と、その裏にある公開の分析用の型(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。radar と ticker は Canvas で描画し、treemap は通常の SwiftUI のビューで描画します。この3つはいずれも VoiceOver 向けの AudioGraphDescriptor を付加します
  • RingBuffer と、LiveTickerChart にデータを渡す observable な LiveSeries によるライブデータ
  • 分析部分は public かつ 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

スクリーンショット

2台のサーバーの time series チャートと破線の移動平均、ライトモード
2台のサーバーの time series チャートと破線の移動平均、ダークモード
iOS と Android のレイテンシの histogram と box plot、ライトモード
iOS と Android のレイテンシの histogram と box plot、ダークモード
身長と体重の scatter チャートとトレンドライン、ライトモード
身長と体重の scatter チャートとトレンドライン、ダークモード
6時間ごとのローソクによる candlestick チャートと利益の waterfall、ライトモード
6時間ごとのローソクによる candlestick チャートと利益の waterfall、ダークモード
曜日と時間帯別のコミット数の heatmap。数値表示付き、ライトモード
曜日と時間帯別のコミット数の heatmap。数値表示付き、ダークモード
2つのモデルを比較する radar チャートとストレージの treemap、ライトモード
2つのモデルを比較する radar チャートとストレージの treemap、ダークモード
iPhone シミュレータ上の ChartGallery サンプルアプリの time series 画面、ライトモード
iPhone シミュレータ上の ChartGallery サンプルアプリの time series 画面、ダークモード
iPhone シミュレータ上の ChartGallery サンプルアプリのライブデータ画面、ライトモード
iPhone シミュレータ上の ChartGallery サンプルアプリのライブデータ画面、ダークモード

タイムライン

  1. bar、pie、scatter、candlestick のビューでリポジトリが公開されました

  2. 1.0.0 がリリースされましたが、そのソースコードは最新の Xcode バージョンではビルドできませんでした

  3. 旧モジュールを削除し、パッケージを小さな placeholder に縮小

  4. Swift Charts の上で 2.0.0 として作り直し。アーカイブされた SwiftUI-Charts-Pro のテスト済みアルゴリズムとチャートを取り込みました

  5. 2.0.1: 極端に大きい有限値は Swift Charts に渡す前に clamp され、同一日付のローソクもすべて描画されるように

リンク

統合されたリポジトリ

関連記事

記事を読む