import pylab as pl
import numpy as np
x = np.arange(4)
y1, y2 = [1,2,1,1], [2,3,1,1.5]
pl.bar(x+0.2,y2, width=0.45, color="g")
pl.errorbar(x+0.4,y2,fmt=None, yerr=0.75, ecolor="r",
lw=2, capsize=10., mew = 3)
pl.bar(x,y1,width=0.45)
pl.errorbar(x+0.2,y1,fmt=None, yerr=0.5, ecolor="r",
lw=2, capsize=10., mew = 3)
pl.savefig("err.png")
produce
Voglio che i valori erratici dei valori verdi siano coperto dalle barre blu.
Ho pensato che regolare i livelli z delle trame avrebbe dovuto ottenere quello (è per questo che sto usando separatamente .bar e .errorbar in primo luogo):
pl.bar(x+0.2,y2, width=0.45, color="g", zorder=1)
pl.errorbar(x+0.4,y2,fmt=None, yerr=0.75, ecolor="r",
lw=2, capsize=10., mew = 3, zorder=1)
pl.bar(x,y1,width=0.45, zorder=2)
pl.errorbar(x+0.2,y1,fmt=None, yerr=0.5, ecolor="r",
lw=2, capsize=10., mew = 3, zorder=2)
Questo da
Non ero in grado di trovare una combinazione di zorders che funzioni, come faccio a regolare correttamente i livelli z di errarelle in un diagramma a barre Matplotlib?
risposte:
2 per risposta № 1Penso che tu debba impostare separatamente l'ordine z degli aggetti (sono uno dei tre oggetti restituiti da pylab.errorbar:
import pylab as pl
import numpy as np
x = np.arange(4)
y1, y2 = [1,2,1,1], [2,3,1,1.5]
pl.bar(x+0.2,y2, width=0.45, color="g", zorder=1)
_, caplines, _ = pl.errorbar(x+0.4,y2,fmt=None, yerr=0.75, ecolor="r",
lw=2, capsize=10., mew = 3, zorder=2)
pl.bar(x,y1,width=0.45, zorder=3)
pl.errorbar(x+0.2,y1,fmt=None, yerr=0.5, ecolor="r",
lw=2, capsize=10., mew = 3, zorder=4)
for capline in caplines:
capline.set_zorder(2)
pl.savefig("err.png")