自定义matplotlib图像显示以添加复制/粘贴功能

3 投票
2 回答
3002 浏览
提问于 2025-04-16 03:18

我想要自定义matplotlib的图像显示功能,这样我可以按下控制键加C(control-c),就能把图像复制到剪贴板。然后我可以把它粘贴到OpenOffice的电子表格里,以便整理我的原始数据和图像结果。请问有没有办法做到这一点?谢谢!

2 个回答

2
import matplotlib
import matplotlib.pyplot as plt
if not globals().has_key('__figure'):
    __figure = matplotlib.pyplot.figure

def on_key(event):
    print event
    if event.key=='c':
        #print event.canvas.__dict__#.Copy_to_Clipboard(event=event)
       # print event.canvas._tkphoto.__dict__
        plt.savefig("/tmp/fig.png")
def my_figure():
    fig = __figure()
    fig.canvas.mpl_connect('key_press_event',on_key)
    return fig    
matplotlib.pyplot.figure = my_figure

这个在tk后端可以用,但我不知道怎么把图片复制到剪贴板。对于文本,我可以用xclip,但图片不行!而且不知道为什么,wx后端在ubuntu上也不太好用...

5

如果你在使用wx这个后端,FigureCanvasWxAgg有一个叫Copy_to_Clipboard的方法可以使用。你可以把CTRL+C这个按键事件绑定到这个方法上。想看个例子,可以参考这个示例代码

撰写回答