19

ipython を使い始めたばかりで、次のような図を作成しています。

fig, axes = plt.subplots()
xs = range(0,100)
axes.plot(xs, [x*x for x in xs], 'r')

図を svgs としてレンダリングできることはわかっています。こちらを参照してください。残念ながら、図は常にラスタライズされた画像としてレンダリングされます。ノートブックのズーム機能を使用すると、ラスタライズされた画像が非常に醜くなります。デフォルトで図が svg として表示されるように、この動作を変更する方法はありますか?

4

2 に答える 2

26

私が探していた魔法:

%matplotlib inline
%config InlineBackend.figure_format = 'svg'
import matplotlib.pyplot as plt

別の方法pngとして、Figure を表示してファイルに保存することもできます。

plt.savefig(fig_filename, format='svg')
于 2015-06-01T20:16:12.810 に答える
18

ipython プロファイル構成ファイルで、デフォルトの Figure 形式を変更できます。私がしたことは、特にノートブック サーバー用の構成プロファイルを作成することでした。

ipython profile create nbserver

コマンドラインで。~/.ipython/profile_nbserverこれにより、変更する可能性のあるほぼすべての設定のサンプル行が含まれる一連のファイルが作成~/.config/ipythonされます (OS によっては、Windows のどこにあるかがわからないなどの場所にある可能性があります)。ファイルを調べる必要がありますipython_notebook_config.py。次に、次の行を追加する必要があります。

c.InlineBackend.figure_formats = ['svg']

これは IPython 3.x にのみ適用され、@HarrySchreiner のコメントに従って追加の形式を指定することもできることに注意してください。IPython 2.x の場合は、 を設定する必要がありますc.InlineBackEnd.figure_format='svg'。このプロファイルを使用するには、ノートブックを次のように開始する必要があります

ipython notebook --profile=nbserver

これが面倒な場合は、実行時にプロファイル名を指定せず、create代わりにデフォルトのプロファイルを変更してください。

また、ラインが必要な場合があります

c.IPKernelApp.matplotlib = 'inline'

各ノートブックが使用される matplotlib インライン バックエンドで自動的に開始されるようにします。

もともと、ズームなどを有効にするためにpngの代わりにsvgバックエンドを使用したかったのですが、svgバックエンドを使用するpcolorと、多数のポイントなどの特定のプロットでブラウザが強制終了される可能性があることがわかりました。そのため、png を使用する方が簡単で、必要に応じてxlimおよびylimコマンドを使用して手動でズームインするだけです。

c.InlineBackend.rcまた、図のサイズと使用するフォントのデフォルトをより合理的に設定するために、行を微調整する必要があります。

編集

現在推奨されているベスト プラクティスは、 を使用するのではなく、代わりにandpylabを明示的にインポートすることです。そのため、これを推奨しないように回答を変更しました。理由については、この投稿を参照してください。matplotlibnumpy

http://carreau.github.io/posts/10-No-PyLab-Thanks.html

pcolorまた、svg レンダリングが特定のプロット要素 (または など)に対して遅すぎる場合は、これらのプロット コマンドplot_surfaceにオプションを渡すことができます。rasterized=Trueこれは、プロットの特定の部分が高速なピクセル ベースのレンダリングになることを意味しますが、他のすべてのプロット要素は適切にベクトル化されます。

于 2013-07-10T23:24:13.610 に答える