2016-07-27 12 views
1

私は別の関数で呼び出され、私のためにいくつかの計算を行い、ファイルへの出力。与えられた時間に複数のデータセットを分析したい場合は、screenで開始し、パテのセッションを切断して閉じ、翌日チェックしてください。私はUbuntu 14.04を使用しています。私はプロットコマンドに到達するまでPyplotは "ioff()とmatplotlib.use( 'Agg')にもかかわらず、Xサーバのlocalhost:10.0に接続できません

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 

が、私は思っている明示的に無効にされるだろうplt.off()を設定することもできます。それ以来、私はこのスレッド(Generating matplotlib graphs without a running X server)に従ってバックエンドを指定していませんでしたが、それでも問題は解決しませんでした。どこが間違っていますか?

答えて

1

呼び出し関数は、matplotlibも使用する他の関数も呼び出します。これらは、この後にのみ呼び出されますが、importステートメントの間は依存関係がロードされます。彼らが最初にロードされたのを見て、次のmatplotlib.use('Agg')宣言を無効にしました。その宣言をメインスクリプトに移して問題を解決しました。

関連する問題