Matplotlib中如何将绘制的矩形置于数据图层上方?
解决Matplotlib矩形被数据线条遮挡的问题
嘿,这个问题我之前也碰到过!原因其实是Matplotlib里不同元素的默认绘制层级(zorder)不一样——plot()生成的线条默认zorder是2,而patches.Rectangle的默认zorder只有1,所以不管你先添加矩形还是先绘制数据,线条都会盖在矩形上面。
解决方法很简单,只需要在创建矩形的时候指定一个更高的zorder参数就行,比如设成3:
import matplotlib.patches as patches import matplotlib.pyplot as plt # 假设你的signal和fit变量已经提前定义好 fig = plt.figure() ax = fig.add_axes([0,0,1,1]) # 添加矩形时设置更高的zorder,让它显示在最上层 ax.add_patch( patches.Rectangle( (776820, 5000), # 矩形左下角坐标(x,y) 3000, # 矩形宽度 3500, # 矩形高度 fill=False, zorder=3 # 关键参数:提升矩形的绘制层级 ) ) ax.plot(signal) ax.plot(fit) plt.show()
顺便补充个小知识:Matplotlib的zorder数值越大,元素就越靠上显示。常见元素的默认zorder大概是这样的:
- 图像(images):0
- 补丁(patches):1
- 线条(lines):2
- 文本(text):3
所以只要把矩形的zorder设得比线条的默认值2大,就能让它稳稳地显示在数据线条上面啦。
内容的提问来源于stack exchange,提问作者KBriggs
相关产品推荐
相关产品推荐

