Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Desafío: refinando las visualizaciones

Desafío 1:

Construye y ejecuta un prompt en ChatGPT para refinar el visual que presenta el facturamiento de las ventas por región. Las instrucciones para el refinamiento son las siguientes:

  • Fondo de la figura y del área del gráfico en el color GRIS_1
  • Color de las columnas en AQUA_1 (si deseas destacar solo una, puedes recurrir a AQUA_3, por ejemplo)
  • Tamaño de la figura de (16,9)
  • Cambia el título de la figura a un tamaño de 18 y color GRIS_5, ajusta las etiquetas y rótulos del eje x e y, cuando existan, a un tamaño 12 y color AZUL_1
  • Elimina el máximo de bordes posible y ajusta los datos para que se presenten en las barras en orden de millones, con color AZUL_1 y tamaño 12

Prompt Reto 1

Tengo un DataFrame llamado df y ya agrupé las ventas por región en un DataFrame llamado facturacion_por_region.

Ahora quiero refinar el gráfico de barras para que cumpla con lo siguiente:

El fondo del gráfico y del área debe ser GRIS_1.

El color de las columnas debe ser AQUA_1.

El tamaño de la figura debe ser (16, 9).

El título debe tener tamaño 18, color GRIS_5.

Las etiquetas del eje x deben ser tamaño 12, color AZUL_1.

No quiero mostrar el eje y ni bordes.

Encima de cada barra quiero mostrar la facturación (en millones de pesos) con el mismo color AZUL_1, tamaño 12.

¿Puedes ayudarme con este gráfico?

Codigo

import matplotlib.pyplot as plt

# Figura y fondo del área
fig, ax = plt.subplots(figsize=(16, 9), facecolor=GRIS_1)
ax.set_facecolor(GRIS_1)

# Barras con color AQUA_1
bars = ax.bar(
    facturacion_por_region['region'],
    facturacion_por_region['facturacion'] / 1e6,
    color=AQUA_1
)

# Título y estilos
ax.set_title('Facturación por Región en 2023', fontsize=18, color=GRIS_5)
ax.set_xticklabels(facturacion_por_region['region'], fontsize=12, color=AZUL_1)
ax.set_yticks([])  # Eliminar etiquetas del eje Y
ax.spines[['top', 'right', 'left', 'bottom']].set_visible(False)  # Eliminar bordes

# Etiquetas encima de cada barra
for bar in bars:
    height = bar.get_height()
    ax.text(
        bar.get_x() + bar.get_width() / 2,
        height + 0.2,
        f'MXN$ {height:.1f}M',
        ha='center',
        fontsize=12,
        color=AZUL_1
    )

plt.tight_layout()
plt.show()

Desafío 2:

Construye y ejecuta un prompt en ChatGPT para refinar el visual que presenta la proporción de personas pre-registradas en Zoop Pay. Las instrucciones para el refinamiento son las siguientes:

Fondo de la figura y del área del gráfico en el color GRIS_1. Color de las porciones: AZUL_1 para "Sí" y GRIS_3 para "No". Tamaño de la figura de (6,6). Cambia el título de la figura a un tamaño de 18 y color GRIS_5. Añade etiquetas en las porciones con tamaño 12 y los porcentajes también con tamaño 12 y en negrita. Los porcentajes deben estar en color BLANCO y las etiquetas de las porciones en el mismo color que las porciones. Ajusta la rosca para que su ancho sea de 0.4 y los porcentajes de las porciones estén en la posición 0.8 en relación al centro. Evita explosiones de porciones y efectos que dificulten el análisis del gráfico.

Prompt Reto 2 Tengo un DataFrame df con una columna zoop_pay que indica si el cliente está pre-registrado (“Sí” o “No”).

Ya hice el conteo con .value_counts() y ahora quiero generar un gráfico de dona refinado con las siguientes condiciones:

Fondo de la figura y del área del gráfico: GRIS_1.

“Sí” debe ir en color AZUL_1 y “No” en GRIS_3.

Tamaño de figura (6, 6).

Título tamaño 18, color GRIS_5.

Etiquetas en cada porción con tamaño 12, mismo color que la porción.

Porcentaje en negrita, tamaño 12, color BLANCO.

Ancho de la dona: 0.4.

Porcentaje dentro de la dona a 0.8 del centro.

Sin explosiones ni efectos raros. ¿Puedes ayudarme con eso?

Codigo

import matplotlib.pyplot as plt

# Conteo de pre-registro
conteo = df['zoop_pay'].value_counts().rename(index={'Sí': 'Sí', 'No': 'No'})
labels = conteo.index
colors = [AZUL_1 if label == 'Sí' else GRIS_3 for label in labels]

# Gráfico de dona refinado
fig, ax = plt.subplots(figsize=(6, 6), facecolor=GRIS_1)
ax.set_facecolor(GRIS_1)

wedges, texts, autotexts = ax.pie(
    conteo,
    labels=labels,
    startangle=90,
    colors=colors,
    autopct='%1.1f%%',
    pctdistance=0.8,
    textprops={'fontsize': 12, 'weight': 'bold', 'color': BLANCO},
    wedgeprops=dict(width=0.4)
)

# Ajustar color de las etiquetas según su porción
for i, text in enumerate(texts):
    text.set_color(colors[i])
    text.set_fontsize(12)

# Título
ax.set_title('Pre-registro en Zoop Pay', fontsize=18, color=GRIS_5)

plt.tight_layout()
plt.show()
1 respuesta

Hola , espero que estés muy bien.

Felicitaciones por tu aprendizaje. Estamos priorizando el foro para postear dudas, así optimizamos el tiempo de respuesta para ustedes.

Para no dejar de compartir los códigos, actividades y ejercicios que realizas, creamos un canal en Discord (#compartatucodigo) donde puedes compartirlos, dar y sugerir mejoras con el resto de tus compañeros.

Un saludo.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios