Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Matplotlib: display plot on a remote machine

I have a python code doing some calculation on a remote machine, named A. I connect on A via ssh from a machine named B. Is there a way to display the figure on machine B?

like image 447
Mermoz Avatar asked Aug 10 '10 20:08

Mermoz


2 Answers

Sure, you can enable X11 forwarding. Usually this is done by passing the -X or -Y option to ssh when you connect to the remote computer

ssh -X computerA 

Note that the SSH daemon on computer A will also have to be configured to enable X11 forwarding. This is done by putting

X11Forwarding yes 

in computer A's sshd_config configuration file.

If computer A's SSH daemon does not have X11 forwarding enabled, you can always have Python write the result of the calculation to a text file, download it to computer B, and use Matplotlib locally.

like image 168
David Z Avatar answered Oct 03 '22 09:10

David Z


If you use matplotlib on Mac OS X on the remote machine (B), you must first make sure that you use one of the X11-based display back-ends, since the native Mac OS X back-end cannot export its plots to another display. Selecting a back-end can be achieved with

import matplotlib matplotlib.use('GTK')  # Or any other X11 back-end 

The list of supported back-ends can be obtained by giving use() an incorrect back-end name: matplotlib then prints an error message listing the possible back-ends.

ssh X11 forwarding can then be used to display matplotlib plots.

like image 24
Eric O Lebigot Avatar answered Oct 03 '22 10:10

Eric O Lebigot