Python 2.7.12 Matplotlib x11 转发不显示或抛出多个错误
Posted
技术标签:
【中文标题】Python 2.7.12 Matplotlib x11 转发不显示或抛出多个错误【英文标题】:Python 2.7.12 Matplotlib x11 forwarding not showing or throwing multiple errors 【发布时间】:2016-07-27 22:02:02 【问题描述】:我正在通过 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 机器上?
【问题讨论】:
要测试您的 x11 转发是否真的有效,您可以使用plt.savefig("out.png")
保存您的图,然后如果您在远程机器上有“gnome 之眼”,请使用eog out.png
打开它以查看跨度>
您已要求 mpl 使用不包含 GUI 的 'Agg'
后端。如果您想使用交互式窗口,您需要使用 GUI 连接的后端之一(例如 'Qt4Agg'
或 'tkagg'
)。
【参考方案1】:
我明白了:
一开始就像“tcaswell”所说,你不能在交互式窗口中使用'Agg'
后端。只需删除前两行代码即可修复此错误。
第二个问题是,plt.figure(1)
命令创建了一个新的数字 1,但在 plt.show()
命令中没有指定应该显示的数字。所以这个错误可以通过删除plt.figure(1)
的行或将要绘制的图形编号放在plt.show()
命令后面的括号中来解决:plt.show(1)
。通过这种方式,可以在一个文件中创建多个图形并能够在它们之间切换。
【讨论】:
以上是关于Python 2.7.12 Matplotlib x11 转发不显示或抛出多个错误的主要内容,如果未能解决你的问题,请参考以下文章
重新安装 python 2.7.12 和 python 3.5.2
supperset (python 2.7.12 + mysql)记录