0

パテ経由で Wi​​ndows 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 マシンに実際に表示する可能性はありますか?

4

1 に答える 1

0

私はそれを理解しました:

最初は "tcaswell" が言ったように、'Agg'対話型ウィンドウでバックエンドを使用することはできません。このエラーは、コードの最初の 2 行を削除するだけで修正されます。2 番目の問題は、コマンドによってplt.figure(1)新しい図 1 が作成されますが、plt.show()コマンドでは表示される図が指定されていないことです。したがって、このエラーは、次の行を削除するか、plt.figure(1)プロットする図の番号をコマンドの後ろの括弧に入れるplt.show()ことで解決できますplt.show(1)。このようにして、1 つのファイルに複数の図を作成し、それらを切り替えることができます。

于 2016-07-28T11:34:41.700 に答える