SwiftUI-Data-Visualization
Gráficos estadísticos, financieros y en vivo para SwiftUI en iOS y macOS, construidos sobre Swift Charts.
Licencia: MIT
Un paquete Swift sin dependencias con diez vistas de gráfico — time series, histogram, box plot, scatter con línea de tendencia, candlestick, waterfall, heatmap, radar, treemap y ticker en vivo — y los tipos de análisis públicos detrás de ellas: Histogram, BoxPlotSummary, LinearRegression, MovingAverage, NiceScale, TreemapLayout y el downsampling Largest-Triangle-Three-Buckets. Las entradas que no son finitas se descartan y los valores extremos se dibujan en un límite documentado; la suite de tests renderiza cada gráfico con estas entradas extremas.
Características
- TimeSeriesChart reduce cada serie a 1.000 puntos con LTTB, dibuja medias móviles, se desplaza por una ventana de tiempo visible y reporta la fecha seleccionada
- Gráficos estadísticos: HistogramChart (Sturges, Freedman–Diaconis, ancho fijo o número de bins), BoxPlotChart con whiskers de Tukey, ScatterChart con una línea de tendencia por mínimos cuadrados
- Gráficos financieros: CandlestickChart con Candle.aggregate(_:interval:) y WaterfallChart con totales
- HeatmapChart, RadarChart y un TreemapChart squarified; radar y ticker dibujan con Canvas, treemap con vistas SwiftUI simples; los tres añaden un AudioGraphDescriptor para VoiceOver
- Datos en vivo con RingBuffer y el LiveSeries observable que alimenta a LiveTickerChart
- El análisis es público y Sendable, así que se puede usar en un Chart propio o fuera del main actor
- Paletas configuradas mediante .chartPalette(_:), incluida una paleta segura para daltonismo; ChartExport renderiza un gráfico a datos PNG o a un CGImage
- Una suite de tests que alimenta nan, infinity, Int.max, rangos extremos y fechas extremas a los tipos de análisis y renderiza cada gráfico con ellos
Inicio rápido
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}Instalación
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.gitCapturas de pantalla
















Cronología
Repositorio abierto con vistas de bar, pie, scatter y candlestick
Se publicó la versión 1.0.0; su código fuente no compilaba con las versiones actuales de Xcode
Se eliminaron los módulos antiguos y el paquete se redujo a un pequeño placeholder
Reconstruido sobre Swift Charts como 2.0.0, incorporando los algoritmos y gráficos testeados de SwiftUI-Charts-Pro, que fue archivado
2.0.1: los valores finitos extremos se limitan (clamp) antes de llegar a Swift Charts, y se dibujan todas las candles de la misma fecha