如何将matplotlib的图形元素置于后景位置并在上面叠加绘图?

4
我知道我在matplotlib组织图形和绘图方面缺少一些非常基础的东西,但是我已经查阅了文档,没有找到答案。我已经将我的问题简化为一个简单的问题,希望这能帮助我更好地理解matplotlib。
给定以下代码片段:
x_coords = [1,2,3]
y_coords = [2,3,4]
labels = ['A','B','C']
plt.scatter(x_coords, y_coords, marker = 'o')
for l, x, y in zip(labels, x_coords, y_coords):
    plt.annotate(l, xy=(x,y), xytext=(-10,5), textcoords='offset points')

circle = plt.Circle((2,3), 1.5, color='w', ec='k')
fig = plt.gcf()
fig.gca().add_artist(circle)

plt.show()

圆圈是绘制在标识点和标签之间的图层上的。我如何控制这些元素绘制在哪些图层上?
以下是示例图像: 简单的绘图
1个回答

7

首先,你代码中的circle不是一个Figure,而是一个Artist,更具体地说是一个Patch。在matplotlib中,Figure是一个顶级Artist,它包含其他元素,因此你的标题有点误导。

其次,你可以通过指定其zorder参数将圆形放置在其他艺术家下面:

circle = plt.Circle((2,3), 1.5, color='w', ec='k', zorder=0)

最低zorder值的艺术家会被绘制在底层,而具有最高值的艺术家会被绘制在顶层。 enter image description here

1
谢谢,zorder正是我所需要的。另外,感谢您指出我的标题有误导性,我已将其更改为“艺术家”。 - sebo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接