注意
转到末尾以下载完整的示例代码。
Zorder 示例#
绘图对象的绘制顺序由其 zorder
属性决定,该属性是一个浮点数。具有较高 zorder
的绘图对象会绘制在顶部。您可以通过设置其 zorder
来更改单个绘图对象的顺序。默认值取决于绘图对象的类型
绘图对象 |
Z 顺序 |
---|---|
图像 ( |
0 |
1 |
|
|
2 |
主刻度 |
2.01 |
|
3 |
5 |
任何对绘图方法的调用都可以显式地为特定项设置 zorder 值。
注意
set_axisbelow
和 rcParams["axes.axisbelow"]
(默认值:'line'
)是用于设置刻度和网格线 zorder 的便捷辅助工具。
绘图是按每个 Axes
进行的。如果您的 Axes 有重叠,则第二个 Axes 的所有元素都会绘制在第一个 Axes 的顶部,无论它们相对的 zorder 如何。
以下示例包含由 plot()
创建的 Line2D
和由 scatter()
创建的点(一个 PatchCollection
)。因此,默认情况下,点位于线的下方(第一个子图)。在第二个子图中,zorder
被明确设置为将点移到线的上方。
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(6, 3.2))
ax1.plot(x, y, 'C3', lw=3)
ax1.scatter(x, y, s=120)
ax1.set_title('Lines on top of dots')
ax2.plot(x, y, 'C3', lw=3)
ax2.scatter(x, y, s=120, zorder=2.5) # move dots on top of line
ax2.set_title('Dots on top of lines')
plt.tight_layout()

许多创建可见对象的函数都接受 zorder
参数。或者,您可以在创建对象后调用其 set_zorder()
方法。
x = np.linspace(0, 7.5, 100)
plt.rcParams['lines.linewidth'] = 5
plt.figure()
plt.plot(x, np.sin(x), label='zorder=2', zorder=2) # bottom
plt.plot(x, np.sin(x+0.5), label='zorder=3', zorder=3)
plt.axhline(0, label='zorder=2.5', color='lightgrey', zorder=2.5)
plt.title('Custom order of elements')
l = plt.legend(loc='upper right')
l.set_zorder(2.5) # legend between blue and orange line
plt.show()

脚本总运行时间: (0 分 1.185 秒)