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

圆圈绘制在绘制点的标记和标签之间的图层上。如何控制绘制这些元素的图层?

这是绘制的图像以供视觉参考:

简单的情节

4

1 回答 1

7

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

其次,您可以通过指定其zorderkwarg 将圆圈置于其他艺术家下方:

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

最低的艺术家zorder被绘制在底层,最高的艺术家被绘制在顶层。

在此处输入图像描述

于 2013-07-23T20:07:36.370 回答