Generación de gráficos combinados en Python: Análisis técnico

¿Por qué usar gráficos combinados?

Los gráficos combinados permiten mostrar dos tipos de información en una sola representación visual. Usualmente, se combinan gráficos de barras para mostrar magnitudes concretas y gráficos de líneas para ilustrar tendencias. Esta combinación es especialmente útil en informes empresariales donde se requiere mostrar tanto valores actuales como direcciones de cambio.

Casos de uso ideales

Los gráficos combinados son más efectivos cuando:

  • Ambos conjuntos de datos comparten el mismo eje X
  • Existe una relación lógica entre los conjuntos de datos
  • Se requiere comparar magnitudes y tendencias simultáneamente

Ejemplos comunes incluyen:

Escenario Barras Línea
Ventas mensuales Ventas reales Promedio móvil
Soporte técnico Casos mensuales Tendencia de crecimiento
Inventario Nivel actual Tendencia histórica

Ejemplo básico de impleemntación


import matplotlib.pyplot as plt

# Configuración básica
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

# Datos de ejemplo
meses = ["Ene", "Feb", "Mar", "Abr", "May", "Jun"]
valores = [120, 98, 135, 110, 150, 160]
tendencia = [110, 112, 120, 122, 135, 145]

plt.figure(figsize=(10, 6))

# Gráfico de barras
plt.bar(meses, valores, label="Valores", edgecolor="black", alpha=0.85)

# Gráfico de línea
plt.plot(meses, tendencia, label="Tendencia", linewidth=2, marker="o")

# Formateo
plt.title("Gráfico Combinado: Barras + Línea")
plt.xlabel("Mes")
plt.ylabel("Valores")
plt.grid(axis="y", linestyle="--", alpha=0.3)
plt.legend()
plt.tight_layout()
plt.show()

Mejoras prácticas

Uso de promedio móvil


import pandas as pd

# Calcular promedio móvil de 3 periodos
serie = pd.Series(valores)
promedio_movil = serie.rolling(window=3).mean()

Añadir etiquetas de valores


# Dentro del código de generación del gráfico
barras = plt.bar(meses, valores)
for i, v in enumerate(valores):
    plt.text(i, v, str(v), ha="center", va="bottom")

Integración con Excel


import pandas as pd

def generar_grafico_desde_excel(ruta_archivo, hoja, columna_x, columna_y):
    df = pd.read_excel(ruta_archivo, sheet_name=hoja)
    x = df[columna_x].astype(str).tolist()
    y = pd.to_numeric(df[columna_y], errors="coerce").fillna(0)
    
    # Generación del gráfico...
    
    plt.savefig("grafico_salida.png")
    plt.close()

Problemas comunes y soluciones

  • Fuente de caracteres: Asegurar configuración de fuentes con plt.rcParams["font.sans-serif"]
  • Formato de datos: Validar y convertir datos con pd.to_numeric()
  • Escala desigual: Usar ejes Y dobles cuando los rangos de datos son muy diferentes
  • Verificación: Confirmar que los datos mostrados coincidan con las fuentes originales

Principios de diseño efectivo

  • Mantener un solo mensaje central por gráfico
  • Usar barras para magnitudes y líneas para tendencias
  • Limitar el número de colores y estilos
  • Etiquetar solo información crítica
  • Evitar sobrecargra visualmente el gráfico

Etiquetas: Matplotlib pandas Python data-visualization Excel

Publicado el 9-19 08:05