SwiftUI-Data-Visualization
Graphiques statistiques, financiers et en direct pour SwiftUI sur iOS et macOS, construits sur Swift Charts.
Licence: MIT
Un package Swift sans dépendance avec dix vues de graphique — série temporelle, histogramme, boîte à moustaches, nuage de points avec ligne de tendance, chandelier, cascade, carte thermique, radar, carte arborescente et ticker en direct — et les types d'analyse publics qui les sous-tendent : Histogram, BoxPlotSummary, LinearRegression, MovingAverage, NiceScale, TreemapLayout et le sous-échantillonnage Largest-Triangle-Three-Buckets. Les entrées non finies sont laissées de côté et les valeurs extrêmes sont dessinées à une limite documentée, et la suite de tests rend chaque graphique avec ces entrées extrêmes.
Fonctionnalités
- TimeSeriesChart sous-échantillonne chaque série à 1000 points avec LTTB, dessine des moyennes mobiles, défile dans une fenêtre temporelle visible et signale la date sélectionnée
- Graphiques statistiques : HistogramChart (Sturges, Freedman–Diaconis, largeur ou nombre fixe), BoxPlotChart avec moustaches de Tukey, ScatterChart avec une ligne de tendance aux moindres carrés
- Graphiques financiers : CandlestickChart avec Candle.aggregate(_:interval:) et WaterfallChart avec des totaux
- HeatmapChart, RadarChart et un TreemapChart squarifié ; radar et ticker dessinent avec Canvas, treemap avec de simples vues SwiftUI ; les trois attachent un AudioGraphDescriptor pour VoiceOver
- Données en direct avec RingBuffer et le LiveSeries observable alimentant LiveTickerChart
- L'analyse est publique et Sendable, donc elle peut être utilisée dans votre propre Chart ou hors de l'acteur principal
- Palettes définies via .chartPalette(_:), y compris une palette adaptée au daltonisme ; ChartExport rend un graphique en données PNG ou en CGImage
- Une suite de tests qui fournit nan, l'infini, Int.max, des plages extrêmes et des dates extrêmes aux types d'analyse et rend chaque graphique avec eux
Démarrage rapide
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.gitCaptures d'écran
















Chronologie
Dépôt ouvert avec des vues barres, camembert, nuage de points et chandelier
Version 1.0.0 publiée ; ses sources ne compilaient pas avec les versions actuelles de Xcode
Modules hérités supprimés et le package réduit à un petit espace réservé
Reconstruit sur Swift Charts en version 2.0.0, reprenant les algorithmes et graphiques testés de SwiftUI-Charts-Pro, qui a été archivé
2.0.1 : valeurs finies extrêmes bornées avant Swift Charts, chaque chandelle à même date dessinée