思路:
- 使用fig.canvas.mpl_connect()函数来绑定相关fig的滚轮事件
- 利用事件event的inaxes属性获取当前鼠标所在坐标系ax
- 使用get_xlim()函数获取坐标系ax的x/y轴坐标刻度范围
- 使用set()函数对坐标系ax进行放大/缩小
示例:
- import matplotlib.pyplot as plt
- import numpy as np
-
- fig = plt.figure()
- def call_back(event):
- axtemp=event.inaxes
- x_min, x_max = axtemp.get_xlim()
- fanwei = (x_max - x_min) / 10
- if event.button == 'up':
- axtemp.set(xlim=(x_min + fanwei, x_max - fanwei))
- print('up')
- elif event.button == 'down':
- axtemp.set(xlim=(x_min - fanwei, x_max + fanwei))
- print('down')
- fig.canvas.draw_idle() # 绘图动作实时反映在图像上
- fig.canvas.mpl_connect('scroll_event', call_back)
- fig.canvas.mpl_connect('button_press_event', call_back)
-
- ax1 = plt.subplot(3,1,1)#截取幕布的一部分
- ax1.xaxis.set_major_formatter(plt.NullFormatter()) # 取消x轴坐标
- x = np.linspace(-5, 5, 10)
- y = x ** 2 + 1
- plt.ylabel('first')
- plt.plot(x, y)
- plt.grid()
- ax2 = plt.subplot(3,1,2)
- ax2.xaxis.set_major_formatter(plt.NullFormatter()) # 取消x轴坐标
- y1=-x**2+1
- plt.plot(x, y1)
-
- ax3 = plt.subplot(3,1,3)
- y3=-x*2+1
- plt.plot(x, y3)
-
- plt.show()
输出效果:

PS:在相应坐标系内滚动鼠标滚轮即可放大/缩小x轴。
总结
到此这篇关于Python matplotlib绘图时使用鼠标滚轮放大/缩小图像的文章就介绍到这了,更多相关Python matplotlib放大缩小图像内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!