/ / Matplotlib: Dostosowywanie poziomów błędów pasków błędów w wykresie słupkowym - python, matplotlib

Matplotlib: Dostosowywanie poziomów z pasków błędów w barchart - python, matplotlib

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")

produkuje

wprowadź opis obrazu tutaj

Chcę, aby były wyświetlane błędy zielonych wartości pokryty przez niebieskie paski.

Pomyślałem, że dostosowanie poziomów z wykresów powinno to osiągnąć (dlatego przede wszystkim używam .bar i .errorbar):

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)

To dajewprowadź opis obrazu tutaj

Nie udało mi się znaleźć kombinacji zordersów, które działają. Jak prawidłowo dopasować poziomy z pasków błędów w wykresie Matplotlib?

Odpowiedzi:

2 dla odpowiedzi № 1

Myślę, że musisz ustawić kolejność z liniami nagłówków osobno (są one jednym z trzech obiektów zwróconych przez 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")

wprowadź opis obrazu tutaj