У меня есть фрагмент кода, который вызывается другой функцией, выполняет некоторые вычисления для меня, а затем графики вывод в файл. Увидев, что весь сценарий может занять некоторое время для работы с большими наборами данных, и, поскольку я могу проанализировать несколько наборов данных в данный момент времени, я запустил его в screen
, затем отключите и закройте сеанс шпатлевки и верните его на следующий день. Я использую Ubuntu 14.04. Мой код выглядит следующим образом (я пропустил расчеты):Pyplot "не может подключиться к X-серверу localhost: 10.0", несмотря на ioff() и matplotlib.use ('Agg')
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. Ouput я получаю следующее:
plotting indeg
PuTTY X11 proxy: unable to connect to forwarded X server: Network error: Connection refused
: cannot connect to X server localhost:10.0
Я полагаю, это связано с кодом пытается открыть окно, но я думал, что явно установив plt.off()
, который будет отключен. Поскольку это не я, то я следил за этой нитью (Generating matplotlib graphs without a running X server) и указал сервер, но это также не решило проблему. Где я могу ошибиться?