matplotlib - 用于向左/向右/向上/向下平移的键盘快捷键

时间:2013-01-26 16:33:42

标签: event-handling matplotlib keyboard-shortcuts

matplotlib中,是否有键盘替代方法,可以通过鼠标左键单击拖动绘图以在四个方向上进行平移?

原因是,除了它看起来像一个明显的键盘快捷键之外,我每次左键单击时都会打印xdata值。在不单击绘图的情况下拖动会很有用。

否则,有没有办法连接到双击事件?这样我只能在那个事件上打印我的价值。目前我通过右键单击打印解决了问题。

3 个答案:

答案 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