Conceptos básicos de visualización
8 ejemplos para empezar con la visualización: 6 básicos y 2 intermedios.
Prerrequisitos
- Python 3.14.0 con matplotlib, seaborn y pandas 2.2+.
- Configuración rápida:
uv pip install matplotlib seaborn pandas plotly
Ejemplos básicos
1. Gráfico de líneas para tendencias
Mostrar cambios a lo largo del tiempo o categorías ordenadas.
import matplotlib.pyplot as plt
months = ["Ene", "Feb", "Mar", "Abr"]
revenue = [120, 135, 128, 150]
plt.plot(months, revenue, marker="o")
plt.ylabel("Ingresos ($k)")
plt.title("Ingresos Mensuales")
plt.tight_layout()
plt.savefig("trend.png", dpi=150)
plt.close()- Los gráficos de líneas necesitan un eje x ordenado, no categorías arbitrarias.
- Los marcadores ayudan en series dispersas; las series densas pueden omitirlos.
- Siempre llame a
plt.close()en scripts para liberar memoria.
Relacionado: matplotlib - figuras y ejes
2. Gráfico de barras para comparaciones
Comparar categorías discretas una al lado de la otra.
import matplotlib.pyplot as plt
regions = ["Este", "Oeste", "Central"]
totals = [420, 380, 290]
plt.bar(regions, totals, color=["#2c7bb6", "#abd9e9", "#fdae61"])
plt.ylabel("Ingresos totales")
plt.tight_layout()- La longitud de la barra codifica la magnitud: comience el eje y en cero para ser honesto.
- Ordene las barras por valor cuando el orden no sea intrínseco.
- Limite las categorías (~15) o cambie a barras horizontales.
Relacionado: seaborn - gráficos de barras estadísticos
3. Histograma para distribuciones
Revelar la dispersión y la asimetría de una variable numérica.
import matplotlib.pyplot as plt
import numpy as np
rng = np.random.default_rng(42)
values = rng.normal(100, 15, size=500)
plt.hist(values, bins=20, edgecolor="white")
plt.xlabel("Puntuación")
plt.ylabel("Conteo")- El número de contenedores afecta la historia: pruebe con 15-30 contenedores para cientos de puntos.
density=Truecompara distribuciones con diferentes tamaños de muestra.- Emparejar con diagramas de caja/violín al comparar grupos.
Relacionado: seaborn -
histploty KDE
4. Dispersión para relaciones
Explorar la correlación entre dos variables numéricas.
import matplotlib.pyplot as plt
ad_spend = [10, 20, 15, 30, 25]
revenue = [120, 180, 150, 240, 210]
plt.scatter(ad_spend, revenue, alpha=0.7)
plt.xlabel("Gasto en publicidad ($k)")
plt.ylabel("Ingresos ($k)")- La transparencia alfa ayuda con los clústeres de sobreplotaje.
- Añada una línea de regresión con
regplotde seaborn cuando la tendencia sea el mensaje. - Etiquete los valores atípicos cuando impulsen las decisiones.
Relacionado: seaborn -
scatterplotcon matices (hues)
5. Valores predeterminados estadísticos de seaborn
Obtenga temas y paletas de colores legibles rápidamente.
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({"region": ["Este", "Oeste"] * 5, "revenue": range(10)})
sns.set_theme(style="whitegrid")
sns.barplot(data=df, x="region", y="revenue", estimator=sum, errorbar=None)
plt.tight_layout()- La API
data=evita la manipulación manual de ejes. estimatoryerrorbarcontrolan la semántica de agregación.- Restablezca el tema después si mezcla estilos de matplotlib puros.
Relacionado: seaborn - flujos de trabajo de EDA
6. Guardar salida de calidad de publicación
Controlar DPI, bbox y formatos vectoriales.
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(6, 4))
ax.plot([1, 2, 3], [1, 4, 9])
fig.savefig("chart.pdf", bbox_inches="tight") # vector para impresión
fig.savefig("chart.png", dpi=300, bbox_inches="tight")
plt.close(fig)- PDF/SVG escalan limpiamente en informes; PNG necesita DPI (150 pantalla, 300 impresión).
bbox_inches="tight"recorta los márgenes excesivos.- El patrón explícito
fig, axse escala a subgráficos.
Relacionado: matplotlib - ciclo de vida de la figura
Ejemplos intermedios
7. Pase de cursor interactivo de Plotly
Explore puntos densos con tooltips en el navegador.
import plotly.express as px
import pandas as pd
df = pd.DataFrame({"x": range(20), "y": [i**1.5 for i in range(20)], "cat": ["A", "B"] * 10})
fig = px.scatter(df, x="x", y="y", color="cat", hover_data=["x", "y"])
fig.write_html("scatter.html")- Las exportaciones HTML se incrustan en paneles sin un servidor.
- Plotly brilla para vistas vinculadas con filtros cruzados.
- Para informes estáticos, prefiera matplotlib/seaborn.
Relacionado: Plotly - gráficos interactivos
8. Gráfico declarativo de Altair
Componga especificaciones de gramática de gráficos que permanezcan legibles.
import altair as alt
import pandas as pd
df = pd.DataFrame({"month": ["Ene", "Feb", "Mar"], "revenue": [120, 135, 128]})
chart = alt.Chart(df).mark_line(point=True).encode(x="month", y="revenue")
chart.save("revenue.json") # Especificación Vega-Lite- Altair impone datos ordenados (tidy data): una fila por observación.
- Las especificaciones JSON se versionan bien en git.
- Los datos grandes requieren agregación antes de Altair.
Relacionado: Altair - codificación declarativa
Versiones de la pila: Esta página fue escrita para Python 3.14.0 (estable 3.14, mantenimiento 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ y uv 0.6+.