Pyplot "cannot connect to X server localhost:10.0" 尽管 ioff() 和 matplotlib.use('Agg')
Pyplot "cannot connect to X server localhost:10.0" despite ioff() and matplotlib.use('Agg')
我有一段代码被不同的函数调用,为我执行一些计算,然后将输出绘制到一个文件中。对于更大的数据集,整个脚本可能需要一段时间 运行,并且由于我可能想在给定时间分析多个数据集,所以我在 screen
中启动它,然后断开连接并关闭我的 putty 会话并返回查看第二天就可以了。我正在使用 Ubuntu 14.04。我的代码如下所示(我跳过了计算):
import shelve
import os, sys, time
import numpy
import timeit
import logging
import csv
import itertools
import graph_tool.all as gt
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.ioff()
#Do some calculations
print 'plotting indeg'
# Let's plot its in-degree distribution
in_hist = gt.vertex_hist(g, "in")
y = in_hist[0]
err = numpy.sqrt(in_hist[0])
err[err >= y] = y[err >= y] - 1e-2
plt.figure(figsize=(6,4))
plt.errorbar(in_hist[1][:-1], in_hist[0], fmt="o",
label="in")
plt.gca().set_yscale("log")
plt.gca().set_xscale("log")
plt.gca().set_ylim(0.8, 1e5)
plt.gca().set_xlim(0.8, 1e3)
plt.subplots_adjust(left=0.2, bottom=0.2)
plt.xlabel("$k_{in}$")
plt.ylabel("$NP(k_{in})$")
plt.tight_layout()
plt.savefig("in-deg-dist.png")
plt.close()
print 'plotting outdeg'
#Do some more stuff
脚本 运行 非常愉快,直到我得到绘图命令。为了尝试找出问题的根源,我目前 运行 在没有屏幕且没有 X11 应用程序的情况下将其固定在腻子中。我得到的输出如下:
plotting indeg
PuTTY X11 proxy: unable to connect to forwarded X server: Network error: Connection refused
: cannot connect to X server localhost:10.0
我认为这是由试图打开 window 的代码引起的,但我认为通过明确设置 plt.off()
将被禁用。因为不是我关注了这个线程(Generating matplotlib graphs without a running X server)并指定了后端,但这也没有解决问题。我可能哪里出错了?
调用函数也调用其他函数,这些函数也使用 matplotlib。这些仅在此之后被调用,但在 import
语句期间它们的依赖项被加载。看到它们首先被加载时,它们禁用了随后的 matplotlib.use('Agg')
声明。将该声明移至主脚本已解决问题。
我有一段代码被不同的函数调用,为我执行一些计算,然后将输出绘制到一个文件中。对于更大的数据集,整个脚本可能需要一段时间 运行,并且由于我可能想在给定时间分析多个数据集,所以我在 screen
中启动它,然后断开连接并关闭我的 putty 会话并返回查看第二天就可以了。我正在使用 Ubuntu 14.04。我的代码如下所示(我跳过了计算):
import shelve
import os, sys, time
import numpy
import timeit
import logging
import csv
import itertools
import graph_tool.all as gt
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.ioff()
#Do some calculations
print 'plotting indeg'
# Let's plot its in-degree distribution
in_hist = gt.vertex_hist(g, "in")
y = in_hist[0]
err = numpy.sqrt(in_hist[0])
err[err >= y] = y[err >= y] - 1e-2
plt.figure(figsize=(6,4))
plt.errorbar(in_hist[1][:-1], in_hist[0], fmt="o",
label="in")
plt.gca().set_yscale("log")
plt.gca().set_xscale("log")
plt.gca().set_ylim(0.8, 1e5)
plt.gca().set_xlim(0.8, 1e3)
plt.subplots_adjust(left=0.2, bottom=0.2)
plt.xlabel("$k_{in}$")
plt.ylabel("$NP(k_{in})$")
plt.tight_layout()
plt.savefig("in-deg-dist.png")
plt.close()
print 'plotting outdeg'
#Do some more stuff
脚本 运行 非常愉快,直到我得到绘图命令。为了尝试找出问题的根源,我目前 运行 在没有屏幕且没有 X11 应用程序的情况下将其固定在腻子中。我得到的输出如下:
plotting indeg
PuTTY X11 proxy: unable to connect to forwarded X server: Network error: Connection refused
: cannot connect to X server localhost:10.0
我认为这是由试图打开 window 的代码引起的,但我认为通过明确设置 plt.off()
将被禁用。因为不是我关注了这个线程(Generating matplotlib graphs without a running X server)并指定了后端,但这也没有解决问题。我可能哪里出错了?
调用函数也调用其他函数,这些函数也使用 matplotlib。这些仅在此之后被调用,但在 import
语句期间它们的依赖项被加载。看到它们首先被加载时,它们禁用了随后的 matplotlib.use('Agg')
声明。将该声明移至主脚本已解决问题。