En la visualización de datos, los gráficos de pastel son una herramienta eficaz para representar proporciones dentro de un conjunto de datos.
Una característica importante de estos gráficos es la capacidad de personalizar cómo se muestran los porcentajes de cada segmento. A continuación, exploraremos las diferentes formas de formatear los porcentajes en un gráfico de pastel utilizando el parámetro autopct de la función plt.pie() en matplotlib.
Veremos cómo utilizar cadenas de formato para ajustar la precisión decimal y añadir texto personalizado, así como implementar funciones para un control más detallado sobre la presentación de los datos.
1. Cadenas de Formato (autopct):
'%1.1f%%': Muestra el porcentaje con un decimal y el símbolo %. Ejemplo: 35.7%.
'%1.0f%%': Muestra el porcentaje como un número entero sin decimales. Ejemplo: 36%.
'%1.2f%%': Muestra el porcentaje con dos decimales. Ejemplo: 35.68%.
'%2.0f%%': Similar a '%1.0f%%', pero reserva más espacio (dos dígitos enteros). Ejemplo: 35% se vería como 35%, pero 5% se vería como 5%.
'%1.1f': Muestra el porcentaje con un decimal, pero sin el símbolo %. Ejemplo: 35.7.
'%1.1f units': Personaliza el texto. En este caso, mostraría el porcentaje seguido de la palabra "units". Ejemplo: 35.7 units.
2. Funciones (autopct):
En lugar de una cadena de formato, puedes pasar una función personalizada a autopct que reciba el valor del porcentaje y devuelva una cadena de texto formateada:
Esta función mostraría tanto el porcentaje con dos decimales como el valor absoluto correspondiente en unidades.
Ejemplo de Uso:
Mostrar porcentajes con un decimal y símbolo %: autopct='%1.1f%%'
Mostrar porcentajes como números enteros: autopct='%1.0f%%'
Mostrar porcentaje y añadir texto personalizado: autopct='%1.1f unidades vendidas'
Mostrar porcentajes con formato personalizado mediante una función: autopct=custom_autopct
Estos valores permiten personalizar cómo se presentan los datos en tu gráfico de pastel, adaptándolo a tus necesidades específicas.
Personalizar la presentación de los porcentajes en un gráfico de pastel no solo mejora la estética del gráfico, sino que también puede hacer que la información sea más comprensible para el público.
Con estas herramientas, puedes crear gráficos que no solo sean informativos, sino también visualmente atractivos.
Creación y Personalización de Gráficos con Matplotlib
Creación y Personalización de Gráficos con Matplotlib
🟢 Diagramas de barras en ejes polares
Un barplot en un eje polar es una variante de un gráfico de barras que se adapta a un sistema de coordenadas polares en lugar de uno cartesiano.
Esto es útil cuando quieres visualizar datos que tienen una relación cíclica o angular, como en el caso de datos relacionados con horas del día, direcciones, o estaciones del año.
Comparto el código, con una advertencia, se utiliza subplots para la proyección polar:
# Datos para el ejercicionp.random.seed(19680801)# Cálculo de las barras polares de ángulo thetaN =20theta = np.linspace(0.0,2* np.pi, N, endpoint=False)radii =10* np.random.rand(N)width = np.pi /4* np.random.rand(N)colors = plt.cm.viridis(radii /10.)# Gráfico de barras en eje polorax = plt.subplot(projection='polar')ax.bar(theta, radii, width=width, bottom=0.0, color=colors, alpha=0.5)plt.show()
Espero les haya servido. ¡Nunca paren de aprender! 🚀🚀
📝 Mis apuntes de esta clase
Gráfico de barras:
Compara cantidades entre diferentes categorías.
Se utiliza en datos discretos.
Ejemplo: Comparar la venta de diferentes productos en un mes.
Aplicación: Es útil para ver qué producto tiene más ventas y como es su desempeño con otros.
import numpy as np
import matplotlib.pyplot as plt
# Datosproducts =["Producto A","Producto B","Producto C"]sales = np.random.randint(20,150,3)# Creación del gráfico de barrasplt.figure(figsize=(10,8))plt.bar( x=products, height=sales, label="Ventas mensuales", color="skyblue")plt.title("Ventas de productos en un mes")plt.xlabel("Productos")plt.ylabel("Ventas")plt.legend()# Anotación para anotar un punto ezpecifico:# El producto con mas ventas.max_sales = sales.max()max_sales_idx = np.where(sales == max_sales)[0][0]max_prod = products[max_sales_idx]plt.annotate("Máximo de ventas", xy=(max_prod, max_sales), arrowprops=dict(facecolor="red", shrink=0.05))plt.show()
Resultado:
Gráfico de pastel (pie):
Muestra la proporción de las diferentes categorías en relación a un total.
Divide un todo en partes (categorías).
⚠️ Utilizar solo cuando:
Hay una diferencia clara en las proporciones.
Son pocas categorías.
Ejemplo: Participación de diferentes productos en el mercado.
import numpy as np
import matplotlib.pyplot as plt
# Datosproducts =["Producto A","Producto B","Producto C"]market_share = np.random.randint(20,150,3)plt.figure(figsize=(10,8))plt.pie( x=market_share, labels=products, autopct="%1.2f%%", startangle=140, colors=["gold","lightcoral","orange"])plt.title("Participación de mercado por producto")plt.axis("equal");
📌La notación ; (punto y coma) en la última línea es el equivalente a ejecutar la función plt.show()
Resultado:
📌Ambos gráficos permiten representar datos categóricos de forma visual y más comprensible.
Los colores se pueden personalizar con códigos hexadecimales como en este ejemplo:
import matplotlib.pyplot as plt
plt.figure(figsize=(8,6))
categories = ['Producto A', 'Producto B', 'Producto C']sales = [120,150,90]
#Creación del gráfico de barras verticalesplt.bar(categories, sales, color='#7d08d7', label='Ventas mensuales')
#Anotación con flecha para destacar un punto específicoplt.annotate('Máximo de ventas', xy=('Producto B', 150),xytext=('Producto C', 160), arrowprops= dict(facecolor = 'black', shrink= 0.05))
plt.title('Ventas de productos en un mes')plt.xlabel('Productos')plt.ylabel('Ventas')
#plt.legend()
plt.show()
import matplotlib.pyplot as plt
plt.figure(figsize=(10,8))# Datos de ejemplo: Participación del producto en el mercadoproducts =['Producto A','Producto B','Producto C']market_share =[50,35,150]# Crear el gráfico de pastelplt.pie( market_share, labels=products, autopct='%1.1f%%', startangle=90, colors=['green','blue','red'], explode=(0,0,0.1),# Destacar Producto C shadow=True# Agrega sombra para resaltar más)# Título con espacio adicionalplt.title('Participación en el mercado por producto', pad=15)# Mostrar el gráficoplt.axis('equal')# Asegura que sea un círculo perfectoplt.show()
En esta clase hay un detalle que vale más que el código: el instructor oculta la leyenda para que la flecha que señala el producto con más ventas sea lo único que se destaque, y advierte que no conviene añadirlo todo de una vez. Es una buena regla para quien presenta datos a un comité: cada gráfico debería tener un solo mensaje, y los elementos extra solo se justifican si lo refuerzan. Un ejemplo típico sería marcar con una flecha el rubro de mayor ejecución en un gráfico de barras de presupuesto y dejar el resto limpio, para que la mirada vaya donde importa.
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
En Python, los diferentes caracteres de agrupación tienen significados específicos:
Paréntesis (): Se utilizan para definir funciones, agrupar expresiones y controlar el orden de evaluación. También son necesarios en llamadas a funciones.
Corchetes []: Se usan para definir listas. También permiten acceder a los elementos de las listas y otros tipos de datos indexables, como strings o diccionarios.
Llaves {}: Se utilizan para definir diccionarios y conjuntos. En un diccionario, representan pares clave-valor, mientras que en un conjunto, representan una colección de elementos únicos.
Cada uno de estos caracteres tiene su propio contexto de uso en el manejo de estructuras de datos y funciones en Python.
Uso: Comparar valores entre diferentes categorías.
Ejemplo: Comparar ventas de productos.
Diagramas de Pastel
Uso: Mostrar proporciones o porcentajes de un total.
Ejemplo: Distribución del presupuesto entre departamentos.
Código para este gráfico:
import matplotlib.pyplot as plt
# Datoslabels =['Math','Science','History','Art','Physical Education']sizes =[33.3,26.7,20.0,13.3,6.7]colors =['#ff9999','#66b3ff','#99ff99','#ffcc99','#c2c2f0']explode =(0.1,0,0,0,0)# Destacar el primer segmento (Math)# Crear figuraplt.figure(figsize=(6,6))# Título separado del gráfico & ajuste de posición del gráfico para bajarlo un pocoplt.title('Weekly Study Time Distribution by Subject', pad=30)plt.subplots_adjust(top=0.85)# Crear gráfico de pastelplt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140, explode=explode, shadow=True)# Asegurar que sea un círculoplt.axis('equal')# Mostrar gráficoplt.show()
plt.figure(figsize=(8,6))products =['product A','product B','Product C']market_share =[50,35,15]# Grafico de pastelplt.pie( market_share, labels= products, autopct='%1.0f%%', startangle=140, explode=(0,0,0.1), colors=('yellowgreen','gold','lightskyblue'), shadow=True, wedgeprops=dict(width=0.5))plt.title('Participación de mercado por producto')plt.show()