2013-03-16 11 views
7

Aggバックエンドを使用している場合、画像ウィンドウをshow()(これにかかわらず、block=Trueに関係なく)のままにしておくことはできません。私はAggを使用しない場合、私は警告を取得:python matplotlib Agg対対話プロットとtight_layout

/Library/Python/2.7/site-packages/matplotlib-1.2.0-py2.7-macosx-10.8-intel.egg/matplotlib/tight_layout.py:225: UserWarning: tight_layout : falling back to Agg renderer warnings.warn("tight_layout : falling back to Agg renderer")

サンプルコード:

import matplotlib as mpl 
mpl.use('Agg')  # With this line = figure disappears; without this line = warning 
import matplotlib.pyplot as plt 
import matplotlib.mlab as mlab 
import numpy as np 

fig = plt.figure() 
ax = fig.add_subplot(111) 
mu, sigma = 0, 0.5 
x = np.linspace(-3, 3, 100) 
plt.plot(x, mlab.normpdf(x, mu, sigma)) 
fig.tight_layout() 
plt.show() 

を私が使用する必要があり異なるバックエンドまたは方法はありますか?

+0

デフォルトのバックエンドとは何ですか? 'import matplotlib as mpl'を実行してから' mpl.get_backend() 'を実行すると、あなたはどうしますか?これは、 "Agg"を指定していないときに使用するバックエンドになります。その2つのバックエンドのいずれかから別のバックエンドに切り替えることで、必要なものを手に入れることができます。 – BrenBarn

+0

@zhermes:最終的に回避策を見つけましたか?私は同じ問題に直面しています。 – nia

+2

回避策は、 'mpl.use( 'Agg')'を削除し、@FelipeCorreia – DilithiumMatrix

答えて

7

@FilipeCorreia in a commentで示される回避策はmpl.use('Agg')を削除し、fig.tight_layout()の代わりにfig.set_tight_layout(True)を使用します。

+0

また、オブジェクト指向でないインタフェースを使用している場合は、 'plt.tight_layout()'の代わりに 'plt.gcf().set_tight_layout(True)'を使用してください。 –

+0

@ 1 '私は 'plt.tight_layout()'とは言わないが、 'pl.t.gcf()'が返すオブジェクト*である 'fig.tight_layout()'を使っている。 – DilithiumMatrix

+1

もちろん、 'plt.function()'構文に慣れている人にはこのコメントを含めてください。 –

6

Aggは、non-interactive backendです。つまり、画面には表示されず、ファイルにのみ保存されます。どのバックエンドを使用していますか?あなたはOSXを持っているかもしれません。おそらくあなたは 'macosx'やAggを使ったインタラクティブなバックエンド(例えばQT4Agg、WXAgg)を試すことができます。

+0

さんが提案した 'fig.tight_layout()'の代わりに 'fig.set_tight_layout(True)'を使用することです。それらの私はまだ同じ警告メッセージを得ています。私が理解できないことは、それが「AGGに戻っている」場合、インタラクティブなプロットはまだ機能するのですか? – DilithiumMatrix

+8

インタラクティブモードを選択する場合は、 'fig.tight_layout()'の代わりに 'fig.set_tight_layout(True)'を試してみてください。 githubの[この号](https://github.com/matplotlib/matplotlib/issues/1852)のコメントを参照してください。 –

+0

@FilipeCorreiaあなたの提案は、pdfのようなAgg以外の非インタラクティブバックエンドを使用している場合でも機能します。回答として投稿できますか? –

関連する問題