事件绑定fig.canvas.mpl_connect()
import matplotlib.pyplot as plt
def on_key_press(event):
print(event.key)
fig, ax = plt.subplots()
fig.canvas.mpl_connect('key_press_event', on_key_press)
plt.show()
这段程序的功能是响应键盘按键,print按键的值
mpl_connect的参数:
参数 | 意义 |
---|---|
‘button_press_event’ | 按下鼠标 |
‘button_release_event’ | 释放鼠标 |
‘draw_event’ | 界面重新绘制 |
‘key_press_event’ | 按下键盘 |
‘key_release_event’ | 释放键盘 |
‘motion_notify_event’ | 鼠标移动 |
‘pick_event’ | 鼠标点选绘图对象 |
‘resize_event’ | |
‘scroll_event’ | 鼠标滚轴事件 |
‘figure_enter_event’ | 鼠标进入figure |
‘figure_leave_event’ | 鼠标离开figure |
‘axes_enter_event’ | 鼠标进入Axes |
‘axes_leave_event’ | 鼠标离开Axes |
‘close_event’ | 关闭图表 |
查询已经注册的响应函数
fig.canvas.callbacks.callbacks
程序示例:键盘控制颜色
import matplotlib.pyplot as plt
import numpy as np
def on_key_press(event):
if event.key in 'rgbcmyk':
line.set_color(event.key)
fig.canvas.draw_idle()#重新绘制整个图表,
fig, ax = plt.subplots()
x = np.linspace(0, 10, 1000)
y = np.sin(x)
line = ax.plot(x, y)[0]
fig.canvas.mpl_disconnect(fig.canvas.manager.key_press_handler_id)#取消默认快捷键的注册
fig.canvas.mpl_connect('key_press_event', on_key_press)
plt.show()
这里有两个点:
- fig.canvas.draw_idle()重新绘制整个图表
- fig.canvas.mpl_disconnect()取消已经注册的响应函数。这里是为了取消默认快捷键
程序示例
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
text = ax.text(0.5, 0.5, 'event', ha='center', va='center', fontdict={'size': 20})
def call_back(event):
info = 'name:{}\n button:{}\n x,y:{},{}\n xdata,ydata:{}{}'.format(event.name, event.button,event.x, event.y,event.xdata, event.ydata)
text.set_text(info)
fig.canvas.draw_idle()
fig.canvas.mpl_connect('button_press_event', call_back)
fig.canvas.mpl_connect('button_release_event', call_back)
fig.canvas.mpl_connect('motion_notify_event', call_back)
plt.show()
功能不多解释,仔细读读代码