1

matplotlib中,是否有键盘替代鼠标左键拖动绘图以在四个方向上平移?

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

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

4

3 回答 3

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)

于 2013-01-26T17:30:32.113 回答
1

这就是我向 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
于 2016-08-16T09:24:12.570 回答
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
于 2021-01-20T09:14:51.907 回答