9

奇妙な問題があります。IPython Notebook を使用して、pandas と matplotlib を使用して非常に広範なスクリプトを作成し、多数のグラフを作成しました。いじくり回しが終わったら、コードをスタンドアロンの Python スクリプトにコピー (およびクリーニング) しました (これにより、svn にプッシュできるようになり、論文の共著者もチャートを作成できるようになります)。

便宜上、スタンドアロンの Python スクリプトを再度ノートブックにインポートし、いくつかのグラフを作成します。

import create_charts as cc
df = cc.read_csv_files("./data")
cc.chart_1(df, 'fig_chart1.pdf')
...

奇妙なことに、上記の方法を使用して取得した .pdf ファイルは、Windows 7 ターミナルからスタンドアロンの Python スクリプトを実行したときに取得した .pdf ファイルとは少し異なります。最も顕著な違いは、特定のチャートでは凡例が下隅ではなく上隅にあることです。しかし、他にも小さな違いがあります (バウンディング ボックスのサイズ、フォントが若干異なるようです)。

これの原因は何でしょうか。どうすればトラブルシューティングできますか?(すでにノートブックをシャットダウンして再起動し、create_chartsスクリプトを再インポートして保存されていない変更を除外しています) 私の端末は Python 2.7.2 を使用しているとpip freeze | grep ipython報告し、ipython 0.13.1を報告します

4

3 に答える 3

2

フォント サイズの問題は、dpi の違いによるものです。図のサイズ(ピクセル単位)がわずかに異なると、凡例の「最適な」位置も変わると思います。

Figure が表示されるデフォルトの dpi は 80 ですが、savefigデフォルトは 100 です。これは、デフォルトでは、matplotlib の Figure は、画面に表示されているものと比べて、保存時にわずかに異なって見えることを意味します。

確かなことはわかりませんが、ipython ノートブックは dpi を 100 以外 (おそらく 80) に設定し、図を保存するときにそれを使用していると思います。

savefig('filename.pdf', dpi=80)スタンドアロン スクリプトで実行してみてください。

于 2013-06-03T20:20:25.283 に答える