Gráficas de Playlist Musical
- Duración:
- 50 min
- Agrupamento:
- 2
Ides recuperar o programa da playlist do reto con Numpy:
Tarefas: Ides crear tres tipos de gráficos investigando e completando o código donde hai ♥
Paso 1: Importa as librarías no programa
Engade estas dúas liñas completadas ao principio do voso programa para importar as librarías:
♥ matplotlib.pyplot as plt
import seaborn as ♥
Paso 2: Representar un gráfico de barras coas reproducións
Un gráfico de barras é perfecto para comparar o número de reproducións das cancións. Engade o seguinte código completado ao programa:
# Gráfico de barras das reproducións
plt.figure(figsize=(♥, ♥)) # Tamaño da figura
plt.bar(cancions, reproducions, color='♥')
plt.title('♥♥♥♥♥♥♥♥', fontsize=♥)
plt.xlabel('♥♥♥♥♥♥', fontsize=♥)
plt.ylabel('♥♥♥♥♥♥', fontsize=♥)
plt.xticks(rotation=♥) # Rotar etiquetas no eixo x
plt.tight_layout()
plt.show()
Pregunta: Cal é a canción que máis se reproduxo?Para que serve plt.tight_latout()?
Paso 3: Crear un histograma das duracións
Un histograma permítenos ver como están distribuídas as duracións das cancións. Engade este código completado:
plt.figure(figsize=(♥, ♥))
plt.hist(duracions, bins=♥, color='♥', alpha=♥)
plt.title('Distribución das ♥♥♥♥♥♥♥', fontsize=♥)
plt.xlabel('Duración (minutos)', fontsize=♥)
plt.ylabel('Frecuencia', fontsize=♥)
plt.grid(True, linestyle='♥', alpha=♥)
plt.show()
Pregunta: Intenta explicar o resultado. Que son os bins?
Paso 4: Usar Seaborn para un gráfico máis organizado
Seaborn ten estilos moi visuais. Por exemplo, podemos facer un gráfico de liñas mostrando as reproducións en orde ascendente. Completa e copia este código para xenerala:
# Ordenar datos
reproducions_ordenadas, cancions_ordenadas = zip(*sorted(zip(reproducions, cancions)))
# Gráfico con Seaborn
plt.figure(figsize=(♥,♥))
sns.lineplot(♥=cancions_ordenadas, y=reproducions_ordenadas, marker='♥', color='♥')
plt.title('Reproducións en orde ascendente', fontsize=♥)
plt.xlabel('♥♥♥♥♥', fontsize=12)
plt.ylabel('♥♥♥♥♥', fontsize=12)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
Pregunta : Como cambia a información cando a ordenamos? É máis doado interpretala? Que fai zip? Que fai sorted?
Paso 5: Personaliza!
Propoñoche:
Cambiar os colores das gráficas.
Investiga como facer diferentes tipos de gráficos: scatterplots ou gráficos de área.
Lembra:A IA está para axudarche, pregúntalle!
Código Python: Xenera playlist con duración e reprodución aleatorias
# Xestor de playlist e visualización de datos
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# -------- PASO 1: Crear os datos --------
# Lista de cancións ficticias
cancions = np.array(["Ritmo Urbano", "Vento do Norte", "Noite Estrelada", "Eco e Son", "Ondas Salgadas",
"Viaxe Sen Fin", "Luz Interior", "Esfera Musical", "Voces do Futuro", "Aurora Mística"])
# Duracións aleatorias entre 2.5 e 5.5 minutos
duracions = np.round(np.random.uniform(2.5, 5.5, size=10), 2)
# Número de reproducións aleatorias entre 100 e 5000
reproducions = np.random.randint(100, 5001, size=10)
# Mostrar a playlist completa
print("Playlist musical:")
for i in range(len(cancions)):
print(f"{cancions[i]} - {duracions[i]} min - {reproducions[i]} reproducións")
Exemplo de resultado esperado
Exemplo de resultado esperado
Exemplo de resultado esperado
RESPOSTAS
- A función plt.tight_layout() axusta automaticamente os elementos dun gráfico para evitar solapamentos e garantir que se vexan correctamente etiquetas, títulos e outros compoñentes visuais.
- Os "bins" nun histograma son os intervalos ou rangos nos que se agrupan os datos para visualizar a súa frecuencia de forma clara.
- Nun histograma, cada barra representa un intervalo ou rango de valores(bin), e a altura da barra mostra cantos datos caen dentro dese intervalo, neste caso, cancións.Pode verse como no caso dos datos aleatorios da mostra do posible resultado que indico, a maioría das cancións duran en torno a 3.5 e non hai de 4 minutos.
- reproducions_ordenadas, cancions_ordenadas = zip(*sorted(zip(reproducions, cancions)))
- Este código ordena as reproducións de menor a maior e reorganiza as cancións correspondentes para manter a relación entre ambas. Utiliza zip para combinar reproducións e cancións nunha lista de pares, aplica sorted para ordenar e finalmente descompón os pares de volta en dúas listas separadas: unha para reproducións e outra para cancións.
Código Python: Gráficas do Xestor de playlist
# Xestor de playlist e visualización de datos
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# -------- PASO 0: Crear os datos --------
# Lista de cancións ficticias
cancions = np.array(["Ritmo Urbano", "Vento do Norte", "Noite Estrelada", "Eco e Son", "Ondas Salgadas",
"Viaxe Sen Fin", "Luz Interior", "Esfera Musical", "Voces do Futuro", "Aurora Mística"])
# Duracións aleatorias entre 2.5 e 5.5 minutos
duracions = np.round(np.random.uniform(2.5, 5.5, size=10), 2)
# Número de reproducións aleatorias entre 100 e 5000
reproducions = np.random.randint(100, 5001, size=10)
# Mostrar a playlist completa
print("Playlist musical:")
for i in range(len(cancions)):
print(f"{cancions[i]} - {duracions[i]} min - {reproducions[i]} reproducións")
# -------- PASO 1,2: Visualizar datos con Matplotlib --------
# 2.1: Gráfico de barras para reproducións
plt.figure(figsize=(10, 6)) # Tamaño da figura
plt.bar(cancions, reproducions, color='skyblue')
plt.title('Número de reproducións por canción', fontsize=16)
plt.xlabel('Cancións', fontsize=12)
plt.ylabel('Reproducións', fontsize=12)
plt.xticks(rotation=45) # Rotar etiquetas no eixo x para que sexan máis visibles
plt.tight_layout() # Axusta os elementos para que se vexan correctamente
plt.show()
# 2.2: Histograma para duracións
plt.figure(figsize=(8, 5))
plt.hist(duracions, bins=5, color='purple', alpha=0.7) # "bins" especifica o número de intervalos
plt.title('Distribución das duracións das cancións', fontsize=16)
plt.xlabel('Duración (minutos)', fontsize=12)
plt.ylabel('Frecuencia', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.5) # Engadir grella ao gráfico
plt.show()
# -------- PASO 3: Visualizar datos con Seaborn --------
# Ordenar datos para crear un gráfico de liñas con Seaborn
reproducions_ordenadas, cancions_ordenadas = zip(*sorted(zip(reproducions, cancions)))
# Gráfico de liñas estilizado
plt.figure(figsize=(10, 6))
sns.lineplot(x=cancions_ordenadas, y=reproducions_ordenadas, marker='o', color='green')
plt.title('Reproducións en orde ascendente', fontsize=16)
plt.xlabel('Cancións', fontsize=12)
plt.ylabel('Reproducións', fontsize=12)
plt.xticks(rotation=45) # Rotar etiquetas no eixo x
plt.tight_layout() # Axustar elementos visuais
plt.show()
# -------- PASO 4: Reflexión --------
print("\nReto completado! Agora podes analizar os datos de forma visual. Pensa: cal é a canción máis reproducida? Como están distribuídas as duracións?")