tkinter.TclError: 无法连接到显示器 "localhost:18.0"

12 浏览
0 Comments

tkinter.TclError: 无法连接到显示器 "localhost:18.0"

我正在尝试在中央服务器上运行一个用Python编写的模拟程序,并在模拟结束后通过连接到我的本地计算机将保存的图形文件/数据文件移动到本地计算机上。代码如下:

import matplotlib.pyplot as plt
import subprocess
import scipy.io
import os
#保存数据文件:
scipy.io.savemat(data_path + Filename_str, dict(A=board))
#使用imshow(热图)创建/保存图形
p = plt.imshow(mean_map.T, cmap = plt.cm.gist_yarg_r, origin = 'lower',  extent = [0, phi, 0, Z], aspect='auto')
plt.savefig(figure_path + Filename_str + '-Homophily.pdf')
#使用ssh连接到我的本地主机(arabian-knights),并执行以下命令。
ret = subprocess.call(['ssh', 'arabian-knights', 'mv Data/* /scratch/Data/'])
ret = subprocess.call(['ssh', 'arabian-knights', 'mv Figure/* /scratch/Figure/'])

我在服务器计算机的后台运行这个模拟程序,从我的本地计算机(arabian-knights)连接到服务器计算机。尽管我断开了与服务器计算机的连接,但由于模拟程序在后台运行,它并不会停止,而是在模拟完成后正确地将数据文件移动到我的本地计算机。然而,通过matplotlib.pyplot.imshow生成的图形文件却没有保存,显示以下错误消息:

Traceback (most recent call last):
  File "./ThrHomoHeatmap-thrstep.py", line 179, in 
    p = plt.imshow(board.T, cmap = plt.cm.gist_yarg_r, vmin=0, vmax=n, origin = 'lower',  extent = [0, phi, 0, Z], aspect='auto')
  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2370, in imshow
    ax = gca()
  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 701, in gca
    ax =  gcf().gca(**kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 369, in gcf
    return figure()
  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 343, in figure
    **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 80, in new_figure_manager
    window = Tk.Tk()
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1688, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: couldn't connect to display "localhost:18.0"

有没有人可以解决这个问题,将matplotlib.pyplot图形文件从服务器移动到本地计算机呢?

0