Il modo usuale questo problema viene gestito è di avere piazzole con qualche piccola separazione. Questo viene fatto per impostazione predefinita quando plt.hist
viene dato più set di dati:
import pylab as plt
x = 200 + 25*plt.randn(1000)
y = 150 + 25*plt.randn(1000)
n, bins, patches = plt.hist([x, y])
È invece che di impilare loro (questo potrebbe essere fatto al di sopra utilizzando l'argomento histtype='barstacked'
), ma si noti che l'ordinamento non è corretta .
Questo può essere risolto controllando individualmente ogni coppia di punti per vedere quale è più grande e quindi usando zorder
per impostare quale viene prima. Per semplicità Sto usando l'uscita del codice precedente (ad esempio n è due allineamenti impilati del numero di punti in ogni scomparto per x ed y):
n_x = n[0]
n_y = n[1]
for i in range(len(n[0])):
if n_x[i] > n_y[i]:
zorder=1
else:
zorder=0
plt.bar(bins[:-1][i], n_x[i], width=10)
plt.bar(bins[:-1][i], n_y[i], width=10, color="g", zorder=zorder)
Ecco l'immagine risultante:
Cambiando l'ordine in questo modo l'immagine sembra davvero strana, questo è probabilmente il motivo per cui non è implementato e ha bisogno di un trucco per farlo. Vorrei attenermi al piccolo metodo di separazione, chiunque sia abituato a questi diagrammi presuppone che abbiano lo stesso valore x.
Se in realtà non si desidera avere 'alpha <1' piuttosto che capire di che colore è il colore traslucido sopra il bianco e utilizzare barre opache di quel colore. – tacaswell
Dovresti includere il codice che hai usato per produrre la trama, poiché meno persone probabilmente scriveranno l'intero codice per te, piuttosto che correggere il codice esistente. – hooy
Qual è il codice che hai usato per generare questo grafico? –