matplotlib补丁集合中的Zorder规范?

时间:2017-06-05 04:24:48

标签: python matplotlib

我正在尝试绘制一系列矩形和圆圈,圆圈位于前景中。

根据以下帖子,我必须设置zorder参数: Patches I add to my graph are not opaque with alpha=1. Why?

当我单独绘制所有圆圈时,这种方法很好,但是当我尝试将一系列圆圈放入一个集合并添加该集合时,这种方法就没有了,即

fig,ax=plt.subplots(1)
p_fancy = FancyBboxPatch((1,1),
                         0.5, 0.5,
                         boxstyle="round,pad=0.1",
                         fc='beige',
                         ec='None', zorder=1)
ax.add_patch(p_fancy)
ax.set_xlim([0,2])
ax.set_ylim([0,2])
circ=patches.Circle ((1,1), 0.2, zorder=10)
ax.add_patch(circ)

工作正常: enter image description here

fig,ax=plt.subplots(1)
p_fancy = FancyBboxPatch((1,1),
                         0.5, 0.5,
                         boxstyle="round,pad=0.1",
                         fc='beige',
                         ec='None', zorder=1)
ax.add_patch(p_fancy)
ax.set_xlim([0.,2])
ax.set_ylim([0.,2])
circ=[]
circ.append(patches.Circle ((1,1), 0.2, zorder=10))
coll=PatchCollection(circ)
ax.add_collection(coll)

没有:

enter image description here 有没有理由,或者zorder是否以不明白的方式对补丁集合进行不同的工作?

1 个答案:

答案 0 :(得分:3)

在第二种情况下,您希望PatchCollection具有已定义的zorder,而不是PatchCollection的成员。因此,您需要为集合指定zorder。

circ=[]
circ.append(Circle ((1,1), 0.2))
coll=PatchCollection(circ, zorder=10)
ax.add_collection(coll)