注意
跳转到末尾以下载完整的示例代码。
重叠坐标轴的平移/缩放事件#
此示例演示了重叠坐标轴的平移/缩放事件如何处理。
默认行为如下:
具有可见补丁的坐标轴会捕获平移/缩放事件
具有不可见补丁的坐标轴会将平移/缩放事件转发给下方的坐标轴
共享坐标轴总是与其父坐标轴一起触发(无论补丁可见性如何)
注意:此处补丁的可见性是指 ax.patch.get_visible()
的值。补丁的颜色和透明度对平移/缩放事件的处理没有影响!
ax.set_forward_navigation_events(val)
可用于覆盖默认行为
True
:将导航事件转发给下方的坐标轴。False
:仅在此坐标轴上执行导航事件。"auto"
:使用默认行为。
要完全禁用平移/缩放事件,请使用 ax.set_navigate(False)

import matplotlib.pyplot as plt
fig = plt.figure(figsize=(11, 6))
fig.suptitle("Showcase for pan/zoom events on overlapping axes.")
ax = fig.add_axes((.05, .05, .9, .9))
ax.patch.set_color(".75")
ax_twin = ax.twinx()
ax1 = fig.add_subplot(221)
ax1_twin = ax1.twinx()
ax1.text(.5, .5,
"Visible patch\n\n"
"Pan/zoom events are NOT\n"
"forwarded to axes below",
ha="center", va="center", transform=ax1.transAxes)
ax11 = fig.add_subplot(223, sharex=ax1, sharey=ax1)
ax11.set_forward_navigation_events(True)
ax11.text(.5, .5,
"Visible patch\n\n"
"Override capture behavior:\n\n"
"ax.set_forward_navigation_events(True)",
ha="center", va="center", transform=ax11.transAxes)
ax2 = fig.add_subplot(222)
ax2_twin = ax2.twinx()
ax2.patch.set_visible(False)
ax2.text(.5, .5,
"Invisible patch\n\n"
"Pan/zoom events are\n"
"forwarded to axes below",
ha="center", va="center", transform=ax2.transAxes)
ax22 = fig.add_subplot(224, sharex=ax2, sharey=ax2)
ax22.patch.set_visible(False)
ax22.set_forward_navigation_events(False)
ax22.text(.5, .5,
"Invisible patch\n\n"
"Override capture behavior:\n\n"
"ax.set_forward_navigation_events(False)",
ha="center", va="center", transform=ax22.transAxes)