2016-07-27 76 views
0

我通过putty从Windows 7登录到远程Linux机器。在设置中,我启用了X11转发选项,并在登录到ssh服务器时添加了-X标志。在此服务器上我运行下面的Python代码:Python 2.7.12 Matplotlib x11转发不显示或抛出多个错误

import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 
import numpy as np 
import pyfits 
a = raw_input("path: ") #filepath on the server, conected with filename 
file = pyfits.open (a +'/file.fits', memap = 'True') 
data = file[0].data 
print data.shape #shape gets printed correctly 

plt.figure(1) 
plt.imshow(data[0,:,:], cmap = 'gray') 
print 3 
plt.show() 
print 4 

我得到的所有打印值,与输出看起来像这样:

(300, 512, 512) 
3 
4 

没有提出,也不是X11窗口运行结束错误。该comadoline回来,好像该程序是在结束。有没有可能让plt.show()命令实际显示在远程控制Windows机器上?

+0

为了测试你的x11转发是否真的有效,你可以用'plt.savefig(“out.png”)'保存你的图形,然后打开它以便用'eog out.png'查看,如果你有“侏儒之眼“在远程计算机上 – mitoRibo

+3

您已要求mpl使用不包含GUI的”Agg“后端。如果你想使用交互式窗口,你需要使用一个GUI连接的后端(例如'Qt4Agg''或''tkagg'')。 – tacaswell

回答

0

我想通弄明白了:在

第一是像“tcaswell”说,你不容使用'Agg'后端与互动的窗口。通过删除前两行代码就可以解决这个错误。 第二个问题是,通过plt.figure(1)命令创建了一个新的数字1,但是在plt.show()命令中没有指定应该显示的数字。所以这个错误可以通过删除plt.figure(1)这一行或者将数字的数字绘制在plt.show()命令后面的括号中来解决:plt.show(1)。通过这种方式,可以在一个文件中创建多个数字并可以在它们之间切换。