Si desarrollas apps móviles y necesitas mostrar gráficas exponenciales, trigonométricas o estadísticas, iOS 18 trae una novedad que simplifica el trabajo: la función LinePlot dentro de la librería Charts. Con ella puedes dibujar curvas matemáticas sin recurrir a librerías externas y con muy pocas líneas de código.
Esto es útil para quienes construyen aplicaciones de monitoreo, finanzas, ciencia o educación, donde los datos visuales hacen toda la diferencia.
¿Qué es LinePlot y por qué importa en SwiftUI?
LinePlot es una función nativa de la librería Charts que permite graficar funciones matemáticas continuas pasándole directamente la expresión a evaluar. Antes tenías que generar arrays de puntos o usar librerías de terceros. Ahora todo vive dentro de un Chart y se resuelve con una sola línea.
¿Qué es LinePlot en iOS 18? Es una función de la librería Charts que dibuja gráficas continuas de funciones matemáticas como cuadráticas, lineales, senoidales o exponenciales sin necesidad de generar manualmente los puntos.
La única condición es importar Charts al inicio del archivo y envolver siempre el LinePlot dentro de un componente Chart [00:55].
¿Cómo defines los límites del plano cartesiano?
Antes de graficar cualquier función, conviene fijar el rango visible del plano. Para eso usas dos modificadores que controlan los ejes:
chartXScale(domain:) define el rango del eje X.
chartYScale(domain:) define el rango del eje Y.
- Ambos aceptan un rango cerrado, por ejemplo
1...10 o -50...50.
Si indicas que el eje X vaya del 1 al 10 y el eje Y del 1 al 100, la gráfica respeta esos márgenes y ajusta visualmente la curva [01:30]. Esto es clave cuando una función crece muy rápido, como la exponencial, o cuando necesitas centrar una onda senoidal alrededor del cero.
¿Cómo se grafica una función cuadrática con LinePlot?
La función cuadrática es el ejemplo más claro para empezar. Dentro del Chart, llamas a LinePlot indicando las etiquetas de los ejes y la operación matemática.
Para graficar X elevado a 2, usas Math.pow enviando la variable x y el valor 2 como double. Con eso ya tienes la parábola dibujada en pantalla [02:45].
swift
Chart {
LinePlot(x: "X", y: "Y") { x in
pow(x, 2.0)
}
}
.chartXScale(domain: 1...10)
.chartYScale(domain: 1...100)
El mismo patrón sirve para todas las demás funciones: cambias la expresión dentro del closure y listo.
¿Qué otras funciones puedes graficar de forma nativa?
Una vez que entiendes la estructura, puedes reutilizar el mismo bloque para distintas funciones matemáticas. Estas son las que se cubren en el ejercicio:
- Función lineal
2x + 3: ideal para mostrar pendientes simples con un dominio del 1 al 10 [03:40].
- Onda senoidal
sin(x): si recortas el eje X a -50...50 se aprecia mejor la oscilación característica [04:30].
- Curva exponencial
pow(2, x): aquí el segundo parámetro es la variable, no el exponente fijo [05:20].
- Raíz cuadrada
sqrt(x): dibuja la curva creciente típica que se aplana con el tiempo [06:05].
¿Cuál es el error más común al usar LinePlot? Olvidar envolverlo dentro de un Chart. Si llamas a la función directamente sin el contenedor, el compilador marca error y la gráfica no se renderiza.
Un detalle importante: cuando trabajas con sin(x), multiplicar por una constante como 10 cambia la amplitud y puede deformar visualmente la onda. Quitar esa multiplicación deja la función pura y mucho más legible [04:15].
¿Cuándo conviene ajustar los rangos de los ejes?
Los rangos no son decorativos, definen qué tan claro se ve el comportamiento de cada función. Para funciones que crecen rápido, como la exponencial, te conviene un eje Y amplio. Para funciones periódicas como el seno, un eje X simétrico alrededor del cero revela mejor la forma.
La lógica es simple: el plano cartesiano debe acomodarse a la función, no al revés. Jugar con chartXScale y chartYScale es parte del proceso de diseño visual de la gráfica.
Con LinePlot ya no necesitas dependencias externas para visualizar matemáticas en tus apps. ¿Qué función te gustaría graficar primero en tu próximo proyecto con SwiftUI? Cuéntalo en los comentarios.