Je voudrais personnaliser l'affichage de l'image matplotlib pour que je puisse taper control-c et copier l'image dans le presse-papiers afin que je puisse la copier dans la feuille de calcul openoffice pour organiser mes résultats bruts de données et d'images. Est-ce qu'il y a un moyen de faire ça? Merci!Personnalisation de l'affichage de l'image matplotlib pour ajouter un copier/coller
Répondre
Si vous utilisez le backend wx, FigureCanvasWxAgg
dispose d'une méthode Copy_to_Clipboard
que vous pouvez utiliser. Vous pouvez lier l'événement de touche CTRL + C pour appeler cette méthode. Pour un exemple, voir ceci sample code.
mais est-il possible d'avoir le graphique automatiquement mis à jour lorsque vous appelez des fonctions graphiques comme plot(), title() (mode interactif comme ipython?) – josh
vous pouvez effacer la figure et redessiner, ou vous pouvez utiliser quelque chose comme les méthodes Pour l'animation sur cette page: http://www.scipy.org/Cookbook/Matplotlib/Animations – ars
arg, wx backend ne fonctionne pas pour moi, les parcelles une fois ne fonctionne pas. coincé avec tk backend – josh
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
Cela fonctionne pour tk backend, mais je n'ai aucune idée de la façon de copier une image dans un presse-papiers. Pour le texte, je peux utiliser xclip, mais les images ne fonctionnent pas! Et pour une raison quelconque, le backend wx ne fonctionne pas très bien sur ubuntu ...
Je suis sûr que c'est possible, mais si Matplotlib ne possède pas déjà la fonctionnalité de copie intégrée, je pense qu'il faudrait beaucoup de travailler pour l'ajouter. Si vous avez besoin d'une solution plus rapide, vous pouvez également envisager d'exporter l'image de Matplotlib vers un fichier (ce qui peut être fait à partir du code Python), puis de l'importer dans OpenOffice. –
Si cela ne vous dérange pas les solutions de hack rapide manuel, je suggérerais l'outil Snipping de Windows (fourni avec Windows 7). Il donne un moyen très rapide de sélectionner la zone d'écran et de la copier tout de suite. – karpathy
im sur Ubuntu! Je pense avoir trouvé des solutions pour sauvegarder l'image et la copier sous linux, je me demandais vraiment si je pouvais modifier l'affichage interactif de graphes matplotlib afin qu'il puisse capturer control-c et ensuite appeler la fonction de copie que je crée. – josh