私はiPythonノートブックをpythonスクリプトに変換しています。いくつかのSeabornプロットの結果をpngファイルとして出力しようとしています。コード:
_import seaborn as sns
...
sns.set_style("whitegrid")
ax = sns.barplot(x=range(1,11), y=[ (x/nrows)*100 for x in addr_pop ], palette="Blues_d")
ax.savefig("html/addr_depth.png")
_
変数について心配する必要はありません。変数は期待どおりに入力されており、iPyNBで見栄えの良いグラフが表示されます。ただし、スクリプト内でコードを実行すると、_RuntimeError: Invalid DISPLAY variable
_が生成されます。
別のスレッドに従って、コードを変更し、これをスクリプトの先頭に配置しました。
_import matplotlib
matplotlib.use('Agg')
_
そして、再試行しました。今回は、プロットでsavefig()
メソッドを使用できるようには見えません。
_AttributeError: 'AxesSubplot' object has no attribute 'savefig'
_
このエラーを検索するすべての結果は、pandasおよび既に表示されているプロットに関連しています。私はSeabornにイチジクをファイルに出力させようとしています。理想的には、すべて。
どんな助けでもありがたいです。
変更することで問題を解決しました
_ax.savefig('file.png')
_
に
_ax.figure.savefig('file.png')
_
図に直接アクセスすることは、バープロットのsavefig()
メソッドにアクセスする1つの方法だと思います。
@WoodChopperにも有効なソリューションがありますが、これには別のインポートステートメントが必要であり、pyplotのsavefig()
を直接利用します。
どちらのソリューションでも、DISPLAY変数エラーを回避するためにmatplotlib.use('Agg')
を設定する必要があります。 参照された投稿 に記載されているように、これは他のmatplotlibライブラリをインポートする前に設定する必要があります。
Pyplotをインポートする必要があると思います。
import matplotlib.pyplot as plt
plt.savefig()