Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

11 Desafío: refinando las visualizaciones

DESAFIO 1
El Prompt para ChatGPT

Este es el prompt refinado que cumple con todas las especificaciones técnicas y visuales:
Actúa como un experto en visualización de datos con Python. Tengo un DataFrame llamado df_ventas_2023 que contiene el total de ventas agrupado por la columna region.
Genera el código para un gráfico de barras horizontales siguiendo estas instrucciones estrictas:
Tamaño de la figura: (16, 9).
Colores de fondo: Tanto el fondo de la figura como el área del gráfico deben ser GRIS_1.
Barras: Color AQUA_1.
Título: 'Facturamiento por Región en 2023', tamaño 18, color GRIS_5.
Ejes: Etiquetas y rótulos (ticks) en tamaño 12 y color AZUL_1.
Limpieza: Elimina todos los bordes posibles (spines).
Etiquetas de datos: Muestra el valor sobre cada barra convertido a millones (ej. 1.5M), en color AZUL_1 y tamaño 12.
Nota: No definas las variables de colores en el código, asume que ya existen: AZUL_1, AQUA_1, GRIS_1, GRIS_5.

import pandas as pd
import matplotlib.pyplot as plt

AZUL_1 = '#174A7E'
AQUA_1 = '#5DA5DA'
GRIS_1 = '#F0F0F0'
GRIS_5 = '#424242'

url_ventas = "https://gist.githubusercontent.com/ahcamachod/966d7162a3c3a2769b8770b35abf1bcc/raw/d79941b3fa46a450f3611589abd8663399c1277b/ventas_zoop.csv"
df_ventas = pd.read_csv(url_ventas)

# Convertir fecha y filtrar por el año 2023
df_ventas['fecha'] = pd.to_datetime(df_ventas['fecha'])
df_ventas_2023 = df_ventas[df_ventas['fecha'].dt.year == 2023]

# Agrupar por categoría y sumar cantidad (asumiendo que 'precio' no está disponible)
facturamiento_region = df_ventas_2023.groupby('categoria')['cantidad'].sum().sort_values(ascending=True)

# 3. Creación del Visual Refinado
fig, ax = plt.subplots(figsize=(16, 9))

# Configuración de fondos
fig.set_facecolor(GRIS_1)
ax.set_facecolor(GRIS_1)

bars = ax.barh(facturamiento_region.index, facturamiento_region.values, color=AQUA_1)

ax.set_title('Cantidad Vendida por Categoría en 2023', fontsize=18, color=GRIS_5, pad=20, loc='left', fontweight='bold')
ax.tick_params(axis='both', labelsize=12, colors=AZUL_1)

for spine in ax.spines.values():
    spine.set_visible(False)

for bar in bars:
    width = bar.get_width()
    ax.text(width + 500, bar.get_y() + bar.get_height()/2,
            f'{width:,.0f}',
            va='center', ha='left', fontsize=12, color=AZUL_1)

plt.tight_layout()
plt.show()

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

DESAFIO 2

El Prompt para ChatGPT

Actúa como un experto en visualización de datos con Python. Tengo un DataFrame llamado df_clientes con la columna pre_registro_zoop_pay (donde 1 es 'Sí' y 0 es 'No').
Genera el código para un gráfico de rosca (donut chart) siguiendo estas instrucciones:
Tamaño de la figura: (6, 6).
Fondos: Tanto la figura como el área del gráfico deben ser GRIS_1.
Colores de porciones: 'Sí' en AZUL_1 y 'No' en GRIS_3.
Título: 'Proporción de Pre-registrados en Zoop Pay', tamaño 18 y color GRIS_5.
Etiquetas y Porcentajes:
Porcentajes dentro de la rosca: tamaño 12, negrita, color BLANCO y posicionados a 0.8 del centro.
Etiquetas de las porciones: tamaño 12 y del mismo color que la porción correspondiente.
Diseño de Rosca: Ancho de la rosca de 0.4. Sin efectos de explosión ni sombras.
Nota: No definas las variables de color, asume que ya están declaradas: AZUL_1, GRIS_1, GRIS_3, GRIS_5, BLANCO.

import pandas as pd
import matplotlib.pyplot as plt

AZUL_1 = '#174A7E'
GRIS_1 = '#F0F0F0'
GRIS_3 = '#A2A2A2'
GRIS_5 = '#424242'
BLANCO = '#FFFFFF'

url_clientes = "https://gist.githubusercontent.com/ahcamachod/d08898e1cc84c7271856e78d9558ca3d/raw/2f7e1fa53711efe6433a5c5ec79948f600591cb9/clientes_zoop.csv"
df_clientes = pd.read_csv(url_clientes)

print("Columnas disponibles en df_clientes:")
print(df_clientes.columns)
print("--------------------------------------------------")

labels = ['Sí', 'No']
colors = [AZUL_1, GRIS_3]

fig, ax = plt.subplots(figsize=(6, 6))
fig.set_facecolor(GRIS_1)
ax.set_facecolor(GRIS_1)

wedges, texts, autotexts = ax.pie(
    conteo,
    labels=labels,
    autopct='%1.1f%%',
    startangle=90,
    colors=colors,
    pctdistance=0.8,                     # Posición de los porcentajes
    wedgeprops={'width': 0.4},           # Ancho de la rosca
    textprops={'fontsize': 12}
)

for autotext in autotexts:
    autotext.set_color(BLANCO)
    autotext.set_weight('bold')

for i, text in enumerate(texts):
    text.set_color(colors[i])

plt.title('Proporción de Pre-registrados en Zoop Pay', fontsize=18, color=GRIS_5, pad=20, fontweight='bold')

plt.tight_layout()
plt.show()

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad