Hacemos una verificación completa cada una de las noticias de nuestro sitio web con el objetivo de enseñarte en todo momento la información más veraz y certera.
Solución:
Puede producir un gráfico de barras superpuestas usando plt.bar()
con el alpha
palabra clave como se muestra a continuación.
los alpha
controla la transparencia de la barra.
nótese bien cuando tienes dos barras superpuestas, una con alfa < 1, obtendrás una mezcla de colores. Como tal, la barra aparecerá de color púrpura aunque la leyenda la muestre en rojo claro. Para aliviar esto, he modificado el ancho de una de las barras, de esta manera, incluso si tus poderes cambian, aún podrás ver ambas barras.
plt.xticks
se puede usar para establecer la ubicación y el formato de las marcas x en su gráfico.
import matplotlib.pyplot as plt
import numpy as np
width = 0.8
highPower = [1184.53,1523.48,1521.05,1517.88,1519.88,1414.98,
1419.34,1415.13,1182.70,1165.17]
lowPower = [1000.95,1233.37, 1198.97,1198.01,1214.29,1130.86,
1138.70,1104.12,1012.95,1000.36]
indices = np.arange(len(highPower))
plt.bar(indices, highPower, width=width,
color='b', label='Max Power in mW')
plt.bar([i+0.25*width for i in indices], lowPower,
width=0.5*width, color='r', alpha=0.5, label='Min Power in mW')
plt.xticks(indices+width/2.,
['T'.format(i) for i in range(len(highPower))] )
plt.legend()
plt.show()
Sobre la base de la respuesta de @Ffisegydd, si sus datos están en un Pandas DataFrame, esto debería funcionar bien:
def overlapped_bar(df, show=False, width=0.9, alpha=.5,
title='', xlabel='', ylabel='', **plot_kwargs):
"""Like a stacked bar chart except bars on top of each other with transparency"""
xlabel = xlabel or df.index.name
N = len(df)
M = len(df.columns)
indices = np.arange(N)
colors = ['steelblue', 'firebrick', 'darksage', 'goldenrod', 'gray'] * int(M / 5. + 1)
for i, label, color in zip(range(M), df.columns, colors):
kwargs = plot_kwargs
kwargs.update('color': color, 'label': label)
plt.bar(indices, df[label], width=width, alpha=alpha if i else 1, **kwargs)
plt.xticks(indices + .5 * width,
[''.format(idx) for idx in df.index.values])
plt.legend()
plt.title(title)
plt.xlabel(xlabel)
plt.ylabel(ylabel)
if show:
plt.show()
return plt.gcf()
Y luego en una línea de comando de python:
low = [1000.95, 1233.37, 1198.97, 1198.01, 1214.29, 1130.86, 1138.70, 1104.12, 1012.95, 1000.36]
high = [1184.53, 1523.48, 1521.05, 1517.88, 1519.88, 1414.98, 1419.34, 1415.13, 1182.70, 1165.17]
df = pd.DataFrame(np.matrix([high, low]).T, columns=['High', 'Low'],
index=pd.Index(['T%s' %i for i in range(len(high))],
name='Index'))
overlapped_bar(df, show=False)
En realidad, es más simple de lo que parecen las respuestas en Internet.
a = range(1,10)
b = range(4,13)
ind = np.arange(len(a))
fig = plt.figure()
ax = fig.add_subplot(111)
ax.bar(x=ind, height=a, width=0.35,align='center')
ax.bar(x=ind, height=b, width=0.35/3, align='center')
plt.xticks(ind, a)
plt.tight_layout()
plt.show()
Puntuaciones y reseñas
Tienes la opción de añadir valor a nuestro contenido contribuyendo tu veteranía en los comentarios.