这篇文章提出了类似的问题:link
答案是在按住 X 或 Y 的同时绘制一个框以仅放大该维度。在 MATLAB 中,您可以在绘制薄矩形框时执行此类缩放。在绘制盒子时,我希望仅在 X 维度(如果是薄水平盒子)或 Y 维度(如果是薄垂直盒子)进行缩放,因为这对于 MATLAB 用户来说更为熟悉。有没有办法为矩形缩放编写自己的缩放功能?
确实,您可以覆盖 Matplotlib 的矩形缩放行为以放大一维(X 或 Y),但您需要修改缩放操作的事件处理程序。默认情况下,Matplotlib 的矩形缩放 会在两个维度上进行缩放,但您可以自定义此行为。
# Custom zoom function to only zoom in the X direction
def zoom_factory(ax, zoom='x'):
def zoom_event(event):
# Get current limits
xlim = ax.get_xlim()
ylim = ax.get_ylim()
# Get coordinates of the zoom rectangle
x0, y0 = event.xdata, event.ydata
x1, y1 = ax.transData.inverted().transform((event.x, event.y))
if zoom == 'x': # Only zoom in X direction
ax.set_xlim([min(x0, x1), max(x0, x1)])
ax.set_ylim(ylim) # Keep Y limits unchanged
elif zoom == 'y': # Only zoom in Y direction
ax.set_xlim(xlim) # Keep X limits unchanged
ax.set_ylim([min(y0, y1), max(y0, y1)])
ax.figure.canvas.draw_idle()
return zoom_event