2017-12-23 10 views
1

私はかなり新しいmatplotlibです。それは、私はこの質問に対する明白な答えを見出していないと言いました。matplotlib subplotの図を画像ファイルに保存する

私はグループによって着色したかった散布図があります。plotting via a loopway to rollでした。私が欲しいもの

import matplotlib.pyplot as plt 
import pandas as pd 
from pydataset import data 

df = data('mtcars').iloc[0:10] 
df['car'] = df.index 

fig, ax = plt.subplots(1) 
plt.figure(figsize=(12, 9)) 
for ind in df.index: 
    ax.scatter(df.loc[ind, 'wt'], df.loc[ind, 'mpg'], label=ind) 
ax.legend(bbox_to_anchor=(1.05, 1), loc=2) 
# plt.show() 
# plt.savefig('file.png') 

コメント解除plt.show()利回り:ここ

は、上記の最初のリンクに基づいて、私の再現性の例として、ある

good plot

は周りの検索、それはplt.savefig()のように見えた方法です。ファイルを保存する。 plt.show()を書き直してplt.savefig()を実行すると、空白の画像が表示されます。 This questionは、show()の前にsavefig()を呼び出すことによってこれが原因であると示唆していますが、完全にコメントアウトしています。 Another questionは、私が直接axオブジェクトを保存することができます示唆コメントがありますが、それは私の伝説をカット:

chopped legend

同じ質問ではなくfig.savefig()を使用する代替手段を持っています。私は同じ切り刻まれた伝説を得る。

ありthis questionが関連思われるのですが、私は(dtfは、彼らがプロットしているpd.DataFrameです)私は答えを適用するかどうかはわかりませんので、直接DataFrameをプロットいないよ:

plot = dtf.plot() 
fig = plot.get_figure() 
fig.savefig("output.png") 

感謝任意の提案のために。


編集:tight_layout()をしようとするには、以下の提案をテストするために、私はこれを実行して、まだ空白のイメージファイルを取得:

fig, ax = plt.subplots(1) 
plt.figure(figsize=(12, 9)) 
for ind in df.index: 
    ax.scatter(df.loc[ind, 'wt'], df.loc[ind, 'mpg'], label=ind) 
ax.legend(bbox_to_anchor=(1.05, 1), loc=2) 
fig.tight_layout() 
plt.savefig('test.png') 
+0

'plt.tight_layout()'を試したことがありますか?それは – lkriener

+0

@lkrienerがまだ 'plt.savefig()'の白いファイルを助けるかもしれません。私が 'axの前に走らせれば。figure.savefig() '、それはプロットに作物と私は完全に伝説を失う。 – Hendy

+0

Hm ... fig.savefig()をtight_layoutと組み合わせて使用​​するとどうなりますか? – lkriener

答えて

1

はラインplt.figure(figsize=(12, 9))を削除し、期待どおりに動作しますが。私。 showの前にsavefigと電話してください。

数字はplt.figure()で作成されたものですが、すべてのデータはその前に作成されたax(および保存されていない別の図)にプロットされています。

伝説などのフィギュアを保存するための図形オブジェクトを保存bbox_inches="tight"オプションもちろん

plt.savefig('test.png', bbox_inches="tight") 

が直接、凡例を移動する方法についてより深く理解するため

fig.savefig('test.png', bbox_inches="tight") 

同様に可能である使用プロットのうち、this answerを参照してください。

関連する問題