Matplotlib:调整barch中errorbars的Z级别

2024-06-02 06:20:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

产生

enter image description here

我希望绿色值的误差条被蓝色条覆盖。你知道吗

我认为调整绘图的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

我找不到有效的佐德组合。如何正确调整Matplotlib条形图中errorbars的z级别?你知道吗


Tags: importnonebarwidthply1fmty2
1条回答
网友
1楼 · 发布于 2024-06-02 06:20:15

我认为必须分别设置capline的z顺序(它们是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

相关问题 更多 >