3

数値解析とデータのプロットのためにipython-notebookを使用しています。パブリケーション品質のプロットを準備する過程で、レイアウトを正しく調整するための調整がたくさんありますが、ipython/matplotlibにブラウザに保存する内容を表示することはできません。それを確認するために新しい出力ファイルを開いたままにしなければならないので、プロセスをもっと苦痛にさせる必要があります。MatplotlibとIpython-notebook:保存される図形を正確に表示

インラインで表示されるイメージを保存されているイメージと同じにする方法はありますか?

例以下のように、明確にするためのFaceColor =「グレー」

import matplotlib.pyplot as plt 
import numpy as np 
%matplotlib inline 

fig = plt.figure(figsize=(6,4),facecolor='gray') 
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) 
x = np.linspace(0,2*np.pi,1000) 
y = np.sin(x) 
ax.plot(x,y,label=r'$\sin(x)$') 
ax.set_xlim(0,2*np.pi) 
ax.set_ylim(-1.2,1.2) 
ax.set_xlabel(r'$x$') 
ax.set_ylabel(r'$y$') 
ax.legend(loc='upper right', frameon=False) 
fig.savefig('mypath.png',dpi=300, facecolor='gray') 
plt.show() 

なお、ここでそれらは、得られる画像の両側から等距離になるように、私は明示的に私の軸寸法を選択しました。これは、ノートブックに示されている画像に保存された画像に尊敬ますが、無視されます。

Notebook displayed image

Savefig画像は:

enter image description here

+0

大丈夫ですので、これを書いて、保存して表示するための回避策として 'IPython.display.Image'を使用することができます。しかし、私が 'plot.show()'の振る舞いを実際に制御できる答えがあるかどうか知りたいです。 – telemin

答えて

4

@andrewで述べたように、ipython魔法はデフォルトでbbox_inches='tight'を強制されています。 ipython documentationで説明したように、これは他の魔法を使用してオーバーライドすることができる。

%matplotlib inline 
%config InlineBackend.print_figure_kwargs = {'bbox_inches':None} 

はsavefigによって産生されるものと同一のインライン画像を生成します。

1

動作がされ

ノートブックは、画像を表示しましたその魔法は bbox_inches='tight'を使用して、インラインでレンダリングすると、デフォルトでになります。

plt.show()の動作の変更について尋ねられましたが、savefig()の動作をnotbeookと同じ設定に変更することができます。

fig.savefig('mypath.png',dpi=300, facecolor='gray', bbox_inches='tight') 

新しい 'savefig' イメージ:

enter image description here

+0

ipythonの魔法の設定 'bbox_inches = 'tight''を指摘してくれてありがとう。残念なことに、私の出力値に同じことをすることはオプションではありません。出力が私が望むサイズになることは保証されていませんが、それはipythonドキュメントの答えを導きます。 – telemin

+0

インラインマジックを実行した後、 'rcParams'をデフォルトに戻そうとしましたが、まだタイトなレイアウトでレンダリングしています。解決策が見つかったら、ここに投稿してください。これは未解決の問題のようです。 – andrew

+0

はい、インラインディスプレイの魔法には独自のデフォルトがいくつかあり、必ずしもrcparamsを延期するとは限りません。 (おそらく、すべてのplt.savefigの値をキャッシングし、呼び出しごとにrcparamsにある値をオーバーライドします。)関連するipythonドキュメントへのリンクを使って回答を投稿しました。 – telemin

関連する問題