在matplotlib
中,是否有键盘替代鼠标左键拖动绘图以在四个方向上平移?
原因是,除了它看起来像是一个明显的键盘快捷键之外,我xdata
每次左键单击时都会打印该值。在不单击绘图的情况下拖动会很有用。
否则,有没有办法连接到双击事件?这样我就可以只在那个事件上打印我的价值。目前我已经通过右键打印解决了。
在matplotlib
中,是否有键盘替代鼠标左键拖动绘图以在四个方向上平移?
原因是,除了它看起来像是一个明显的键盘快捷键之外,我xdata
每次左键单击时都会打印该值。在不单击绘图的情况下拖动会很有用。
否则,有没有办法连接到双击事件?这样我就可以只在那个事件上打印我的价值。目前我已经通过右键打印解决了。
def on_dbl_click(event):
if event.dblclick:
print event.x, event.y
fig, ax = plt.subplots(1, 1)
fig.canvas.mpl_connect('button_press_event', on_dbl_click)
您只需要测试事件是否已dblcilck
设置(doc)
这就是我向 matplotlib 图添加“ctrl+c”快捷方式的方式。使用以下函数创建的任何图形都会通过“ctrl+c”将图形的图片复制到剪贴板。
import matplotlib.pyplot as plt
from PyQt4 import QtGui
def figure(num = None):
"""Creates and returns a matplotlib figure and adds a 'ctrl+c' shortcut that copies figure to clipboard"""
def on_ctrl_c_click(event):
if event.key == 'ctrl+c' or event.key == 'ctrl+C':
QtGui.QApplication.clipboard().setPixmap(QtGui.QPixmap.grabWidget(fig.canvas))
fig = plt.figure(num)
fig.canvas.mpl_connect('key_press_event', on_ctrl_c_click)
return fig
这是一个简单的功能,允许使用箭头键在所有 4 个方向上平移。
import matplotlib.pyplot as plt
def pan_nav(event):
ax_tmp = plt.gca()
if event.key == 'left':
lims = ax_tmp.get_xlim()
adjust = (lims[1] - lims[0]) * 0.9
ax_tmp.set_xlim((lims[0] - adjust, lims[1] - adjust))
plt.draw()
elif event.key == 'right':
lims = ax_tmp.get_xlim()
adjust = (lims[1] - lims[0]) * 0.9
ax_tmp.set_xlim((lims[0] + adjust, lims[1] + adjust))
plt.draw()
elif event.key == 'down':
lims = ax_tmp.get_ylim()
adjust = (lims[1] - lims[0]) * 0.9
ax_tmp.set_ylim((lims[0] - adjust, lims[1] - adjust))
plt.draw()
elif event.key == 'up':
lims = ax_tmp.get_ylim()
adjust = (lims[1] - lims[0]) * 0.9
ax_tmp.set_ylim((lims[0] + adjust, lims[1] + adjust))
plt.draw()
fig = plt.figure()
fig.canvas.mpl_connect('key_press_event', pan_nav)
plt.plot(1, 1, 'ko') # plot something