Personalización Avanzada de Gráficos en Matplotlib
Resumen
Vamos a explorar cómo crear gráficos de líneas utilizando la biblioteca matplotlib en Python.
El objetivo es visualizar la relación entre las horas estudiadas y los puntajes obtenidos por dos estudiantes en un examen. A lo largo de este ejercicio, aprenderás a configurar el tamaño del gráfico, trazar múltiples series de datos, personalizar las líneas y marcadores, y agregar anotaciones para destacar puntos importantes en la visualización.
También existe personalizaciones que podemos hacer con la escala que se maneja en X y Y o si queremos apuntar a algún punto específico como vemos en el siguiente ejercicio
import matplotlib.pyplotas plt
plt.figure(figsize=(8,6))hours =[2,3,4,5,6,7,8]exam_scores_student_1 =[55,60,65,70,75,80,85]exam_scores_student_2 =[50,58,63,69,74,78,83]plt.plot(hours, exam_scores_student_1, marker='o', color='green', linestyle='-', linewidth =2, label ='Estudiante 1')plt.plot(hours, exam_scores_student_2, marker='s', color='red', linestyle='--',linewidth =2, label ='Estudiante 2')# Añadir anotación en un punto específico
plt.annotate('Mejora significativa', xy=(5,70), xytext=(6,60), arrowprops=dict(facecolor='black', shrink=0.05))# Escalar los ejes para ajustar mejor los datos
plt.ylim(50,90) # Escala del eje y
plt.xlim(0,8) # Escala del eje x
plt.title('Relación entre horas estudiadas y el puntaje de dos estudiantes')plt.xlabel('Horas')plt.ylabel('Puntaje')#Añadir la leyenda de explicación
plt.legend()plt.show()
plt.annotate(): Esta función se usa para añadir una anotación en un punto específico del gráfico. En este caso, estamos señalando una “Mejora significativa” en el puntaje del “Estudiante 1” cuando estudia 5 horas, con una flecha que apunta al punto en el gráfico.
plt.ylim() y plt.xlim(): Estas funciones permiten ajustar las escalas de los ejes para que los datos se presenten de manera más clara. Aquí, el eje y se limita a un rango de 50 a 90 puntos y el eje x de 2 a 8 horas, para enfocar mejor la visualización en los datos relevantes.
Este ejercicio demuestra cómo matplotlib puede ser una herramienta poderosa para visualizar datos de manera efectiva. Al personalizar los gráficos con anotaciones y ajustes de escala, podemos resaltar tendencias y puntos clave en los datos, facilitando así su interpretación.
loc= Posición de la leyenda ('best', 'upper right', 'lower left', etc.)
frameon=Mostrar o no el marco de la leyenda (True o False).
El código Completo sería:
import matplotlib.pyplotas plt
#Configurar el tamaño del gráfico
plt.figure(figsize=(8,6))hours =[2,3,4,5,6,7,8]exam_scores_student_1 =[55,60,65,70,75,80,85]exam_scores_student_2 =[50,58,63,69,74,78,83]#Crear gráfico de dispersión de dos estudiantes
plt.scatter(hours, exam_scores_student_1, marker='o', color='green', label ='Estudiante 1')plt.scatter(hours, exam_scores_student_2, marker='s', color='red', label ='Estudiante 2')plt.title('Relación entre horas estudiadas y el puntaje de dos estudiantes', fontsize=13, c='b')plt.xlabel('Horas', fontsize=8, c='g')plt.ylabel('Puntaje', fontsize=8, c='r')plt.legend(loc='upper left', fontsize=10, frameon=True)plt.show()
Personalizar un gráfico es ideal para ponerle su sabor personal a un trabajo. Es ideal para que puedan decir "¡Ah! Sí, este se nota que lo hizo xyz." Siempre es bueno que lo identifiquen a uno por un trabajo bien hecho y personalizado.
En **Matplotlib**, la personalización de gráficos es una de sus características más útiles. Puedes ajustar prácticamente todos los aspectos de un gráfico para hacerlo más claro y visualmente atractivo. A continuación se presentan varias formas de personalizar un gráfico:
### 1. **Personalización de Estilos**
Puedes utilizar estilos predefinidos para cambiar rápidamente la apariencia general del gráfico. Para ver los estilos disponibles:
import matplotlib.pyplot as plt
print(plt.style.available)
Para aplicar un estilo, puedes usar:
plt.style.use('ggplot')
### 2. **Títulos y Etiquetas**
Agregar títulos y etiquetas a los ejes mejora la comprensión del gráfico.
plt.title('Título del Gráfico')plt.xlabel('Etiqueta del Eje X')plt.ylabel('Etiqueta del Eje Y')
Puedes personalizar el tamaño y el color de las fuentes:
Puedes dividir tu área de gráficos en múltiples gráficos más pequeños.
fig, ax = plt.subplots(2,2)# Crea una cuadrícula de 2x2 de gráficosax\[0,0].plot(x, y)ax\[1,1].plot(x, z)
### 9. **Grillas**
Agregar una grilla ayuda a leer los valores en los gráficos.
plt.grid(True)# Activa la grillaplt.grid(color='gray', linestyle='--', linewidth=0.5)# Personalización
### 10. **Guardar Gráficos**
Puedes guardar tu gráfico en un archivo:
plt.savefig('grafico.png', dpi=300, bbox\_inches='tight')# Alta resolución
Estas son solo algunas de las formas en que puedes personalizar los gráficos en Matplotlib para hacerlos más informativos y estéticamente agradables.
IMPORTANCIA DE PERSONALIZAR GRÁFICOS EN MARPLOTLIB
La personalización de gráficos en Matplotlib es crucial porque:
Claridad: Mejora la comprensión al añadir etiquetas, títulos y leyendas.
Visualización: Utiliza colores y estilos para distinguir datos y resaltar información importante.
Estética: Hace que los gráficos sean más atractivos y profesionales.
Adaptabilidad: Permite ajustar gráficos para diferentes formatos y audiencias.
Enfoque: Resalta los datos relevantes y reduce el ruido visual.
Top de los 10 países con más ventas en un gráfico de barras (sin contar el primero)
import pandas as pd, numpy as np, matplotlib.pyplotas plt
df = pd.read_csv('./pandas/online_retail.csv')country_count = df['Country'].value_counts()countries = pd.Series(country_count.index)countries = np.array(country_count.index)country_sales = np.array(country_count)plt.figure(figsize=(19.20,10.80))plt.bar(countries[1:11], country_count[1:11], color='green')plt.title('Sales by country',fontsize=21)plt.xticks(fontsize=14)plt.yticks(fontsize=14)
!4.1. Librería Matplotlib - Entrenamiento de data Scientist en Python - Nivel básico
MOdelo coworcountry o modelo coworculture con muchas actividades para pausas activas y acompañamiento de tu rol profesional Recuerda que Estamos enfocados en atender y brindar espacios para nomadas digitales, teletrabajo y coworking space en Agrolenials Paradise Ecohostel Country Inns contacto directo whatsapp +573206299333 y Faccebook
import plotly.express as px
import plotly.graph_objects as go
# 1. Preparar los datos: Top 10 productos por recaudación
United Kingdom84%Netherlands2.92%EIRE2.7%Germany2.27%France2.03%Australia1.41%Switzerland0.578%Spain0.562%Belgium0.42%Sweden0.375%Japan0.363%Norway0.361%Portugal0.301%Finland0.229%Channel Islands0.206%Denmark0.193%Italy0.173%Cyprus0.133%Austria0.104%Hong Kong0.104%Singapore0.0936%Israel0.0811%Poland0.074%Unspecified0.0487%Greece0.0483%Iceland0.0442%Canada0.0376%Malta0.0257%United Arab Emirates0.0195%USA0.0178%Lebanon0.0174%Lithuania0.017%European Community0.0133%Brazil0.0117%RSA0.0103%Czech Republic0.00726%Bahrain0.00563%Saudi Arabia0.00135%United KingdomNetherlandsEIREGermanyFranceAustraliaSwitzerlandSpainBelgiumSwedenJapanNorwayPortugalFinlandChannel IslandsDenmarkItalyCyprusAustriaHong KongSingaporeIsraelPolandUnspecifiedGreeceIcelandCanadaMaltaUnited Arab EmiratesUSALebanonLithuaniaEuropean CommunityBrazilRSACzech RepublicBahrainSaudi ArabiaDistribución Global de Ventas
No me estaban apareciendo las líneas y cambié el scatter por plot y de una aparecieron, tambien agregue plt.legend() para que aparecieran las leyendas de los estudiantes. el codigo quedo así.
import matplotlib.pyplotas plt
plt.figure(figsize=(8,6))hours =[2,3,4,5,6,7,8]exam_scores_student_1 =[55,60,65,70,75,80,85]exam_scores_student_2 =[50,58,63,69,74,78,83]plt.plot(hours, exam_scores_estudent_1, marker ='o', color ='green', linestyle ='-', linewidth =2, label ='estudiante 1')plt.plot(hours, exam_scores_estudent_1, marker ='s', color ='blue', linestyle ='--', linewidth =2, label ='estudiante 2')plt.title('Horas de Estudio vs Ntoas de Examen')plt.xlabel('Horas de Estudio')plt.ylabel('Notas de Examen')plt.legend()plt.show()
En Matplotlib, además de los marcadores que has utilizado ('o' para círculo y 's' para cuadrado), existen otros muchos tipos de marcadores que puedes usar en gráficos de dispersión. Aquí te dejo una lista de algunos de los más comunes:
'p': Pentagono.
'^': Triángulo hacia arriba.
'v': Triángulo hacia abajo.
'<': Triángulo hacia la izquierda.
'>': Triángulo hacia la derecha.
'D': Diamante.
'H': Hexágono.
'+': Más (signo más).
'x': Cruz.
',': Pixel (un punto muy pequeño).
'_': Línea horizontal.
Matplotlib es una herramienta magnifica para ciencia de datos, y más cuando se la combina con numpy.