EC2 で動作するように matplotlib を設定するにはどうすればよいですか?

EC2 で動作するように matplotlib を設定するにはどうすればよいですか?

私たちは、学生のために仮想開発/研究クラウド環境を構築しようとしています。学生は、ログインして Python IDE を起動し、宿題のためにグラフをいくつかプロットできる必要があります。

私たちは、Python と IDLE IDE がインストールされた 64 ビット Ubuntu 12.10 を実行しています。学生は ssh -X を使用してログインし、GUI ウィンドウを生成する IDLE を起動します。

問題: IDEでこのようなものを実行する

nltk.download()

新しいウィンドウを生成します。しかし次のようなことを試してみましょう:

book2.dispersion_plot("chair")

何も起こりません、ここで新しいウィンドウが起動してプロットが表示されるはずです (ローカル マシンではこれが起こります)。これは X11 と関係があるのではないかと考えていますが、この時点ではシステム管理の知識が私の範囲を超えています。Mac (xQuartz) と PC (xming) の両方のクライアントからこれを確認しました。どなたか助けていただければ幸いです。

答え1

わかった。

matplotlib は、x11 とうまく連携するレンダリング バックエンドを使用します。ただし、適切なバックエンドを手動で選択すると [matplotlib.use('TkAgg')]、例外がスローされます。matplotlib は、ubuntu で pip を使用して正しくビルドされず、依存関係がいくつか不足していることが判明しました。具体的には、x11 対応のバックエンドに必要な依存関係 (matplotlibrc で既定値を 'Agg' に設定) が不足しています。次の方法で修正しました:

pip uninstall matplotlib           //unistall matplotlib
apt-get build-dep matplotlib       //download and build needed dependencies
pip install -U matplotlib          //force matplotlib rebuild

上記は、デフォルトのバックエンドを TkAgg (matplotlibrc 内) に正しく設定します。誰かのお役に立てば幸いです。

関連情報