如何调整plt.errorbar的显示层级,解决其遮挡plt.plot/scatter的问题
解决Matplotlib中errorbar始终覆盖plot/scatter的问题
问题原因
Matplotlib里plt.errorbar默认的zorder(显示层级优先级)数值比plt.plot、plt.scatter高,所以无论绘制顺序如何,errorbar的元素都会显示在最上层。
解决方案
手动设置绘图函数的zorder参数,让后绘制的元素拥有更高的zorder值即可:
- 先绘制errorbar,再绘制plot的示例:
import matplotlib.pyplot as plt # 先画errorbar,设置较低的zorder plt.errorbar(x, data_2, yerr=std_2, color='b', zorder=1) # 后画plot,设置更高的zorder确保显示在上方 plt.plot(x, data_1, color='r', markersize=10, zorder=2) plt.show()
- 用scatter替代plot的示例:
plt.errorbar(x, data_2, yerr=std_2, color='b', zorder=1) plt.scatter(x, data_1, color='r', s=100, zorder=2) plt.show()
原理说明
Matplotlib通过zorder控制元素的堆叠顺序:数值越大,元素显示层级越高。默认情况下errorbar的zorder为2,plot和scatter的默认zorder为1,所以会出现errorbar始终覆盖的情况,手动调整数值就能改变堆叠顺序。
内容的提问来源于stack exchange,提问作者Aal_op
相关产品推荐
相关产品推荐

