La visualización de datos es esencial para comunicar hallazgos de manera efectiva. En este tutorial, exploraremos las principales bibliotecas de Python para crear gráficos impactantes:
- Matplotlib: Para visualizaciones básicas y personalizables.
- Seaborn: Para análisis estadístico visual.
- Plotly: Para gráficos interactivos y dashboards.
Usaremos un dataset real de ventas de una tienda online con registros diarios durante 30 días.
1. Gráficos Básicos con Matplotlib
Instalación
pip install matplotlib pandas
Ejemplos Prácticos
Gráfico de Líneas (Tendencia de Ventas)
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('ventas.csv')
plt.plot(df['fecha'], df['ventas_totales'])
plt.xlabel('Fecha')
plt.ylabel('Ventas Totales')
plt.title('Ventas Diarias')
plt.grid(True)
plt.show()
Gráfico de Barras (Ventas por Producto)
plt.bar(df['producto'], df['ventas_producto'])
plt.xlabel('Producto')
plt.ylabel('Ventas')
plt.title('Ventas por Producto')
plt.xticks(rotation=45)
plt.show()
Scatter Plot (Relación Fecha vs Ventas)
plt.scatter(df['fecha'], df['ventas_totales'])
plt.xlabel('Fecha')
plt.ylabel('Ventas')
plt.title('Distribución de Ventas')
plt.show()
2. Personalización Avanzada en Matplotlib
Colores, Estilos y Anotaciones
plt.style.use('ggplot') # Estilo predeterminado
plt.plot(df['fecha'], df['ventas_totales'], color='purple', linestyle='--', marker='o')
plt.xlabel('Fecha', fontsize=12)
plt.ylabel('Ventas', fontsize=12)
plt.title('Ventas con Estilo Personalizado', fontweight='bold')
# Añadir anotaciones
max_venta = df['ventas_totales'].max()
fecha_max = df.loc[df['ventas_totales'] == max_venta, 'fecha'].values[0]
plt.annotate(f'Máximo: {max_venta}', xy=(fecha_max, max_venta), xytext=(10, 10),
textcoords='offset points', arrowprops=dict(arrowstyle='->'))
plt.show()
3. Visualización Estadística con Seaborn
Instalación
pip install seaborn
Ejemplos Clave
Histograma y KDE (Distribución de Ventas)
import seaborn as sns
sns.histplot(df['ventas_totales'], kde=True, color='skyblue')
plt.xlabel('Ventas Totales')
plt.ylabel('Frecuencia')
plt.title('Distribución de Ventas')
plt.show()
Heatmap de Correlación
corr = df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('Matriz de Correlación')
plt.show()
Boxplot (Distribución por Categoría)
sns.boxplot(x='categoria', y='ventas_producto', data=df)
plt.title('Distribución de Ventas por Categoría')
plt.xticks(rotation=45)
plt.show()
4. Gráficos Interactivos con Plotly
Instalación
pip install plotly dash
Gráfico Interactivo de Series Temporales
import plotly.express as px
fig = px.line(df, x='fecha', y='ventas_totales', title='Ventas Diarias Interactivas')
fig.update_xaxes(title_text='Fecha')
fig.update_yaxes(title_text='Ventas Totales')
fig.show()
Dashboard Básico con Dash
from dash import Dash, dcc, html
app = Dash(__name__)
app.layout = html.Div([
html.H1("Dashboard de Ventas"),
dcc.Graph(figure=fig)
])
if __name__ == '__main__':
app.run_server(debug=True)
5. Subplots y Layouts Avanzados
Varios Gráficos en una Figura
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
# Gráfico 1: Barras
ax1.bar(df['producto'], df['ventas_producto'], color='orange')
ax1.set_title('Ventas por Producto')
ax1.tick_params(axis='x', rotation=45)
# Gráfico 2: Líneas
ax2.plot(df['fecha'], df['ventas_totales'], color='green')
ax2.set_title('Tendencia de Ventas')
plt.tight_layout()
plt.show()
6. Principios de Diseño en Visualización de Datos
✅ Teoría del Color
- Usa paletas coherentes (ej:
viridis
,plasma
). - Evita colores muy saturados.
✅ Storytelling con Datos
- Títulos claros y descriptivos.
- Anotaciones para resaltar insights.
✅ Accesibilidad
- Texto legible (tamaño y contraste).
- Alternativas para daltónicos.
Código Final Entregable
Puedes descargar un Jupyter Notebook completo con todos los ejemplos desde este enlace.
Conclusión
Con Matplotlib, Seaborn y Plotly, puedes crear visualizaciones desde simples hasta interactivas. Recuerda:
🔹 Sé claro en lo que comunicas.
🔹 Optimiza el diseño para tu audiencia.
🔹 Experimenta con diferentes gráficos.
¡Ahora es tu turno de crear visualizaciones impactantes! 🚀
Deja una respuesta