Todos los paquetes de código abierto
InterfazSwift

SwiftUI-Data-Visualization

Gráficos estadísticos, financieros y en vivo para SwiftUI en iOS y macOS, construidos sobre Swift Charts.

7EstrellasÚltima versión: v2.0.1Actualizado: 15 de octubre de 2026
Plataformas:iOS 17macOS 14

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

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}

Instalación

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

Capturas de pantalla

Gráfico de time series de dos servidores con medias móviles discontinuas, modo claro
Gráfico de time series de dos servidores con medias móviles discontinuas, modo oscuro
Histograma de latencia y box plot para iOS y Android, modo claro
Histograma de latencia y box plot para iOS y Android, modo oscuro
Gráfico de scatter de altura y peso con línea de tendencia, modo claro
Gráfico de scatter de altura y peso con línea de tendencia, modo oscuro
Gráfico candlestick de velas de seis horas y un waterfall de beneficios, modo claro
Gráfico candlestick de velas de seis horas y un waterfall de beneficios, modo oscuro
Heatmap de commits por día de la semana y hora, con los valores impresos, modo claro
Heatmap de commits por día de la semana y hora, con los valores impresos, modo oscuro
Gráfico radar comparando dos modelos y un treemap de almacenamiento, modo claro
Gráfico radar comparando dos modelos y un treemap de almacenamiento, modo oscuro
Pantalla de time series de la app de ejemplo ChartGallery en un simulador de iPhone, modo claro
Pantalla de time series de la app de ejemplo ChartGallery en un simulador de iPhone, modo oscuro
Pantalla de datos en vivo de la app de ejemplo ChartGallery en un simulador de iPhone, modo claro
Pantalla de datos en vivo de la app de ejemplo ChartGallery en un simulador de iPhone, modo oscuro

Cronología

  1. Repositorio abierto con vistas de bar, pie, scatter y candlestick

  2. Se publicó la versión 1.0.0; su código fuente no compilaba con las versiones actuales de Xcode

  3. Se eliminaron los módulos antiguos y el paquete se redujo a un pequeño placeholder

  4. Reconstruido sobre Swift Charts como 2.0.0, incorporando los algoritmos y gráficos testeados de SwiftUI-Charts-Pro, que fue archivado

  5. 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

Enlaces

Repositorios fusionados

Artículo relacionado

Leer el artículo