No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Gráficos de Barras y Diagramas de Pastel

25/32
Recursos

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:
pythonCopiar código
def custom_autopct(pct):
    return f'{pct:.2f}% ({int(round(pct/100.*sum(participacion)))} unidades)'

plt.pie(participacion, labels=productos, autopct=custom_autopct)
  • 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.

Aportes 11

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

🟢 **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. ![](https://static.platzi.com/media/user_upload/image-1d6da1c4-3c71-4073-93ad-c9d55716287f.jpg) 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**: ```python # Datos para el ejercicio np.random.seed(19680801) # Cálculo de las barras polares de ángulo theta N = 20 theta = 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 polor ax = 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. ```python import numpy as np import matplotlib.pyplot as plt # Datos products = ["Producto A","Producto B","Producto C"] sales = np.random.randint(20, 150, 3) # Creación del gráfico de barras plt.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**: ![](https://res.cloudinary.com/dmwsbri4c/image/upload/v1727291455/Grafico_barras_e1jujv.png) **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. ```python import numpy as np import matplotlib.pyplot as plt # Datos products = ["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**: ![](https://res.cloudinary.com/dmwsbri4c/image/upload/v1727291456/Grafico_pie_qoo0qe.png) 📌Ambos gráficos permiten representar datos categóricos de forma visual y más comprensible. Espero este aporte les sea de utilidad 💜
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() ![](https://static.platzi.com/media/user_upload/image-ca535911-15d4-40b5-83fa-c3c34345f6da.jpg)
ESTARIA GENIAL UNA CLASE DE MANEJO DE GRAFICO CON MPLOT LIB A TRAVEZ DE PROMPT ENGENIERING
Me puse a experimentar de esta manera: `etiquetas = ['A', 'B', 'C', 'D']tamaños = [25, 35, 20, 20]colores = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']explosion = (0, 0.2, 0, 0)` `plt.pie(tamaños, explode=explosion, labels=etiquetas, colors=colores, autopct='%1.1f%%', shadow=True, startangle=140)plt.axis('equal')plt.title('Diagrama de Pastel de Prueba')` `plt.show()` ![](https://static.platzi.com/media/user_upload/image-50cb2088-9520-4800-ad2e-f5633a8e03c3.jpg)
Les dejo un ejemplo para el caso de Retail: plt.figure(figsize=(8,6)) group\_sales = sales\_data.groupby(\['Month'])\['Quantity'].sum().reset\_index(name='Quantity') print(group\_sales) plt.bar(group\_sales\['Month'], group\_sales\['Quantity'], label='Ventas Mensuales') plt.annotate('Maximo de ventas', xy=(11, 700000), xytext=(12, 50000), arrowprops=dict(facecolor='black', shrink=0.05)) plt.title('Ventas de productos en un mes') plt.xlabel('Productos') plt.ylabel('Ventas') plt.show()
![](https://static.platzi.com/media/user_upload/image-6013d968-3ff9-4cd6-9ddd-82a36e0b0308.jpg)Jugando un pco se puede hacer muchas cosas
**¿PARA QUÉ SIRVEN LOS GRÁFICOS DE BARRAS Y DIAGRAMAS DE PASTEL?** En Python, los gráficos de barras y los diagramas de pastel son herramientas útiles para visualizar datos categóricos y proporciones.
**Gráficos de Barras** * **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. ###
Les presento mi ejemplo practico ![](https://static.platzi.com/media/user_upload/image-9cc3e128-c7e9-43c6-8b4a-cf9e699a3626.jpg)
\### Gráficos de Barras y Diagramas de Pastel en Matplotlib \*\*Matplotlib\*\* es una biblioteca muy flexible que permite crear gráficos de barras y diagramas de pastel con múltiples opciones de personalización. \--- \### \*\*Gráfico de Barras\*\* El gráfico de barras se utiliza para comparar categorías en términos de una variable cuantitativa. \#### Ejemplo básico de un gráfico de barras: ```python import matplotlib.pyplot as plt \# Datos categorias = \['A', 'B', 'C', 'D'] valores = \[3, 7, 5, 6] \# Crear gráfico de barras plt.bar(categorias, valores) \# Personalización plt.title('Gráfico de Barras') plt.xlabel('Categorías') plt.ylabel('Valores') plt.show() ``` \#### Gráfico de barras horizontales: ```python plt.barh(categorias, valores) plt.title('Gráfico de Barras Horizontal') plt.xlabel('Valores') plt.ylabel('Categorías') plt.show() ``` \#### Gráfico de barras apiladas: Para crear gráficos de barras apiladas, usamos la misma posición en el eje `x` y acumulamos los valores en el eje `y`. ```python \# Datos categorias = \['A', 'B', 'C', 'D'] valores1 = \[3, 7, 5, 6] valores2 = \[2, 5, 4, 8] \# Crear barras apiladas plt.bar(categorias, valores1, label='Grupo 1') plt.bar(categorias, valores2, bottom=valores1, label='Grupo 2') \# Personalización plt.title('Gráfico de Barras Apiladas') plt.xlabel('Categorías') plt.ylabel('Valores') plt.legend() plt.show() ``` \#### Personalización de colores y anchura de barras: ```python plt.bar(categorias, valores, color='skyblue', width=0.6) plt.title('Gráfico de Barras Personalizado') plt.show() ``` \--- \### \*\*Diagrama de Pastel\*\* Los diagramas de pastel se utilizan para mostrar proporciones en una distribución de categorías. \#### Ejemplo básico de un diagrama de pastel: ```python \# Datos categorias = \['A', 'B', 'C', 'D'] valores = \[15, 30, 45, 10] \# Crear gráfico de pastel plt.pie(valores, labels=categorias) \# Personalización plt.title('Diagrama de Pastel') plt.show() ``` \#### Añadir porcentaje y destacar una sección: ```python \# Exploding: resaltar una categoría explode = (0.1, 0, 0, 0) # Resalta el primer segmento (A) \# Crear gráfico de pastel con porcentajes plt.pie(valores, labels=categorias, autopct='%1.1f%%', explode=explode, startangle=90) \# Asegurar que el gráfico sea circular plt.axis('equal') plt.title('Diagrama de Pastel con Porcentajes') plt.show() ``` \#### Personalización de colores y sombras: ```python \# Colores personalizados colores = \['gold', 'yellowgreen', 'lightcoral', 'lightskyblue'] plt.pie(valores, labels=categorias, colors=colores, autopct='%1.1f%%', shadow=True, startangle=140) plt.axis('equal') plt.title('Diagrama de Pastel Personalizado') plt.show() ``` \--- \### Comparación entre Gráficos de Barras y Diagramas de Pastel: \- \*\*Gráficos de Barras\*\*: Ideales para comparar cantidades entre categorías. \- \*\*Diagramas de Pastel\*\*: Mejor para mostrar proporciones o partes de un todo. Ambos tipos de gráficos son fáciles de personalizar en Matplotlib para adaptarse a tus necesidades de visualización.