SwiftUI-Data-Visualization
iOS と macOS の SwiftUI 向けの、統計・金融・ライブデータのチャート。Swift Charts の上に構築されています。
ライセンス: 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、極端な範囲、極端な日付を与え、それらであらゆるチャートを描画するテストスイート
クイックスタート
1import SwiftUI2import SwiftUIDataVisualization3 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_40010 )11 12 var body: some View {13 TimeSeriesChart(steps)14 .frame(height: 240)15 .padding()16 }17}インストール
Swift Package Manager
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
1https://github.com/muhittincamdali/SwiftUI-Data-Visualization.gitスクリーンショット
















タイムライン
bar、pie、scatter、candlestick のビューでリポジトリが公開されました
1.0.0 がリリースされましたが、そのソースコードは最新の Xcode バージョンではビルドできませんでした
旧モジュールを削除し、パッケージを小さな placeholder に縮小
Swift Charts の上で 2.0.0 として作り直し。アーカイブされた SwiftUI-Charts-Pro のテスト済みアルゴリズムとチャートを取り込みました
2.0.1: 極端に大きい有限値は Swift Charts に渡す前に clamp され、同一日付のローソクもすべて描画されるように