0

我正在通过 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 机器上实际显示?

4

1 回答 1

0

我想通了:

起初就像“tcaswell”所说,你不能使用'Agg'带有交互式窗口的后端。只需删除前两行代码即可修复此错误。第二个问题是,通过plt.figure(1)命令创建了一个新的数字 1,但在plt.show()命令中没有指定应该显示的数字。因此,此错误可以通过删除显示的行plt.figure(1)或将要绘制的图形的编号放在命令后面的括号中来解决plt.show()plt.show(1)。通过这种方式,可以在一个文件中创建多个图形并能够在它们之间切换。

于 2016-07-28T11:34:41.700 回答