可以使用您自己的轴类。在您的情况下,您可以继承matplotlib.axes.Axes
并更改drag_pan
方法以始终像按下“x”键一样操作。但是,缩放似乎没有在该类中定义。以下将只允许 x 轴平移:
import matplotlib
import matplotlib.pyplot as plt
class My_Axes(matplotlib.axes.Axes):
name = "My_Axes"
def drag_pan(self, button, key, x, y):
matplotlib.axes.Axes.drag_pan(self, button, 'x', x, y) # pretend key=='x'
matplotlib.projections.register_projection(My_Axes)
figure = plt.figure()
ax = figure.add_subplot(111, projection="My_Axes")
ax.plot([0, 1, 2], [0, 1, 0])
plt.show()
对于缩放,您可能需要查看工具栏控件本身。NavigationToolbar2类具有drag_zoom
似乎与此处相关的方法,但是由于不同的后端都有自己的版本(例如NavigationToolbar2TkAgg
编辑
您可以在以下位置修补所需的行为:
import types
def press_zoom(self, event):
event.key='x'
matplotlib.backends.backend_tkagg.NavigationToolbar2TkAgg.press_zoom(self,event)
figure.canvas.toolbar.press_zoom=types.MethodType(press_zoom, figure.canvas.toolbar)
您可以正确地执行此操作并创建工具栏的子类,但是您必须创建 Figure、FigureCanvas 和 NavigationToolbar 的实例并将它们放入 Tk 应用程序或其他东西中。我认为没有一种非常简单的方法可以使用您自己的工具栏和简单的绘图界面。