Un gráfico de barras de porcentaje apilado es un gráfico de barras simple en forma apilada con un porcentaje de cada subgrupo en un grupo. Los diagramas de barras apiladas representan diferentes grupos uno encima del otro. La altura de la barra depende de la altura resultante de la combinación de los resultados de los grupos. Va desde abajo hasta el valor en lugar de ir desde cero hasta el valor. Un gráfico de barras apiladas de porcentaje es casi lo mismo que un gráfico de barras apiladas . Los subgrupos se muestran uno encima del otro, pero los datos se normalizan para que la suma de cada subgrupo sea igual al total de cada uno.
El conjunto de datos utilizado en los siguientes ejemplos se muestra a continuación:
El conjunto de datos se puede descargar desde aquí .
Procedimiento: El procedimiento para dibujar el gráfico de barras de porcentaje apilado son los siguientes pasos que se describen a continuación con ejemplos:
1. Dibuje un gráfico de barras apiladas utilizando datos (conjunto de datos, diccionario, etc.).
Python3
# importing packages import pandas as pd import matplotlib.pyplot as plt # load dataset df = pd.read_excel("Hours.xlsx") # view dataset print(df) # plot a Stacked Bar Chart using matplotlib df.plot( x = 'Name', kind = 'barh', stacked = True, title = 'Stacked Bar Graph', mark_right = True)
Producción:
Name Studied Slept Other 0 Ram 4.855064 9.639962 9.504974 1 Yash 8.625440 0.058927 15.315634 2 Alpha 3.828192 0.723199 19.448609 3 Deep 7.150955 3.899420 12.949625 4 Alex 6.477900 8.198181 9.323919 5 Jack 1.922270 1.331427 20.746303 6 Sufia 8.978216 0.993438 14.028347
2. Agregue porcentaje en subgrupos de cada grupo.
Python3
# importing packages import pandas as pd import numpy as np import matplotlib.pyplot as plt # load dataset df = pd.read_excel("Hours.xlsx") # view dataset print(df) # plot a Stacked Bar Chart using matplotlib df.plot( x = 'Name', kind = 'barh', stacked = True, title = 'Percentage Stacked Bar Graph', mark_right = True) df_total = df["Studied"] + df["Slept"] + df["Other"] df_rel = df[df.columns[1:]].div(df_total, 0)*100 for n in df_rel: for i, (cs, ab, pc) in enumerate(zip(df.iloc[:, 1:].cumsum(1)[n], df[n], df_rel[n])): plt.text(cs - ab / 2, i, str(np.round(pc, 1)) + '%', va = 'center', ha = 'center')
Producción:
Name Studied Slept Other 0 Ram 4.855064 9.639962 9.504974 1 Yash 8.625440 0.058927 15.315634 2 Alpha 3.828192 0.723199 19.448609 3 Deep 7.150955 3.899420 12.949625 4 Alex 6.477900 8.198181 9.323919 5 Jack 1.922270 1.331427 20.746303 6 Sufia 8.978216 0.993438 14.028347
3. Edite el gráfico con algunas funciones (opcional).
Python3
# importing packages import pandas as pd import numpy as np import matplotlib.pyplot as plt # load dataset df = pd.read_xlsx("Hours.xlsx") # view dataset print(df) # plot a Stacked Bar Chart using matplotlib df.plot( x = 'Name', kind = 'barh', stacked = True, title = 'Percentage Stacked Bar Graph', mark_right = True) df_total = df["Studied"] + df["Slept"] + df["Other"] df_rel = df[df.columns[1:]].div(df_total, 0) * 100 for n in df_rel: for i, (cs, ab, pc) in enumerate(zip(df.iloc[:, 1:].cumsum(1)[n], df[n], df_rel[n])): plt.text(cs - ab / 2, i, str(np.round(pc, 1)) + '%', va = 'center', ha = 'center', rotation = 20, fontsize = 8)
Producción:
Name Studied Slept Other 0 Ram 4.855064 9.639962 9.504974 1 Yash 8.625440 0.058927 15.315634 2 Alpha 3.828192 0.723199 19.448609 3 Deep 7.150955 3.899420 12.949625 4 Alex 6.477900 8.198181 9.323919 5 Jack 1.922270 1.331427 20.746303 6 Sufia 8.978216 0.993438 14.028347
Publicación traducida automáticamente
Artículo escrito por deepanshu_rustagi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA