SwiftUI-Data-Visualization
Statistik-, Finanz- und Live-Charts für SwiftUI auf iOS und macOS, aufgebaut auf Swift Charts.
Lizenz: MIT
Ein abhängigkeitsfreies Swift-Package mit zehn Chart-Views — Zeitreihe, Histogramm, Box-Plot, Scatter mit Trendlinie, Candlestick, Waterfall, Heatmap, Radar, Treemap und Live-Ticker — und den öffentlichen Analyse-Typen dahinter: Histogram, BoxPlotSummary, LinearRegression, MovingAverage, NiceScale, TreemapLayout und Largest-Triangle-Three-Buckets-Downsampling. Nicht endliche Eingaben werden ausgelassen, Extremwerte werden an einer dokumentierten Grenze gezeichnet, und die Test-Suite rendert jedes Chart mit diesen Extremwerten.
Funktionen
- TimeSeriesChart reduziert jede Serie mit LTTB auf 1.000 Punkte, zeichnet gleitende Durchschnitte, scrollt durch ein sichtbares Zeitfenster und meldet das ausgewählte Datum
- Statistik-Charts: HistogramChart (Sturges, Freedman–Diaconis, feste Breite oder Anzahl), BoxPlotChart mit Tukey-Whiskern, ScatterChart mit einer Trendlinie nach kleinsten Quadraten
- Finanz-Charts: CandlestickChart mit Candle.aggregate(_:interval:) und WaterfallChart mit Zwischensummen
- HeatmapChart, RadarChart und ein squarified TreemapChart; Radar und Ticker zeichnen mit Canvas, Treemap mit einfachen SwiftUI-Views; alle drei hängen einen AudioGraphDescriptor für VoiceOver an
- Live-Daten mit RingBuffer und der observablen LiveSeries, die LiveTickerChart versorgt
- Die Analyse ist public und Sendable und kann daher in einem eigenen Chart oder außerhalb des Main Actors verwendet werden
- Paletten werden über .chartPalette(_:) gesetzt, darunter eine farbenblindsichere Palette; ChartExport rendert ein Chart zu PNG-Daten oder einem CGImage
- Eine Test-Suite, die den Analyse-Typen nan, infinity, Int.max, extreme Bereiche und extreme Daten übergibt und jedes Chart damit rendert
Schnellstart
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}Installation
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.gitScreenshots
















Zeitleiste
Repository eröffnet mit Bar-, Pie-, Scatter- und Candlestick-Views
Version 1.0.0 veröffentlicht; ihr Quellcode ließ sich mit aktuellen Xcode-Versionen nicht bauen
Alte Module entfernt und das Package auf einen kleinen Platzhalter reduziert
Auf Swift Charts als 2.0.0 neu aufgebaut, unter Übernahme der getesteten Algorithmen und Charts von SwiftUI-Charts-Pro, das archiviert wurde
2.0.1: extreme endliche Werte werden vor Swift Charts begrenzt, jede Kerze mit gleichem Datum wird gezeichnet