我通过putty从Windows 7登录远程linux机器。在设置中,我启用了X11转发选项,并在登录ssh服务器时添加了-X标志。在这个服务器上,我运行以下python代码:
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 :(得分:0)
我明白了:
起初它就像“tcaswell”所说,你不能在交互式窗口中使用'Agg'
后端。只需删除前两行代码即可修复此错误。
第二个问题是,plt.figure(1)
命令创建了一个新的数字1,但在plt.show()
命令中没有指定应显示的数字。因此,可以通过删除显示plt.figure(1)
的行或将图形编号放在plt.show()
命令后面的括号中来解决此错误:plt.show(1)
。通过这种方式,可以在一个文件中创建多个图形,并能够在它们之间切换。