2015-04-15 3 views
3
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') 

производитMatplotlib: Настройка Z-уровней errorbars в BarChart

enter image description here

Я хочу errorbars из зеленых значений, чтобы быть покрыты синими барами.

Я думал, регулируя Z-уровни участков должны добиться того, что (именно поэтому я использую .bar и .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) 

Это дает enter image description here

Мне не удалось найти комбинацию zorders, которая работает. Как правильно настроить z-уровни ошибок в баре Matplotlib?

ответ

2

Я думаю, что вы должны установить Z-порядок caplines отдельно (они являются одним из трех объектов, возвращаемых 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') 

enter image description here

+0

Большое спасибо, что сделал трюк A обратите внимание, что это может быть интересно: это решение не работает со старой версией Matlotlib версии 1.1.1rc, но отлично работает с 1.3.1 вверх. –

Смежные вопросы