在matplotlib
中,是否有键盘替代方法,可以通过鼠标左键单击拖动绘图以在四个方向上进行平移?
原因是,除了它看起来像一个明显的键盘快捷键之外,我每次左键单击时都会打印xdata
值。在不单击绘图的情况下拖动会很有用。
否则,有没有办法连接到双击事件?这样我只能在那个事件上打印我的价值。目前我通过右键单击打印解决了问题。
答案 0 :(得分:1)
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)
答案 1 :(得分:1)
这就是我添加" ctrl + c" matplotlib图的快捷方式。使用下面的功能创建的任何图形都会通过" 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
答案 2 :(得分:0)
这是一个允许使用箭头键在所有 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