2017-01-25 9 views
0

同じfigsizeでpandas.plotを使用する同じ関数を呼び出すと、サイズが異なるPNGファイルが生成されます。幅は同じですが、高さはピクセル単位で変わります。私はx軸のラベルの長さが高さを変更すると思う。私はまだ直接matplotlib関数を呼び出すために試みていない。pandas.plotとpyplot.save_figは同じサイズの異なるPNGを作成します

私はまたplt.rcParams['figure.figsize'] = (7,4)を試しました。この問題は、figsizeの設定方法に問題はありません。私のprint_fig_infoは常に希望の値を生成します。 savefigへお電話あなたが明示的にまだbbox_inches='tight'経由のすべての要素に合う最小サイズにfigsizeを変更するにはmatplotlibのを頼むで

# Primitive way that confirmed that the figure size does not change 
def print_fig_info(label=""): 
    print(label,str(plt.gcf().get_size_inches())) 

def my_plot(df): 
    global c 
    print_fig_info("Before plot") 
    df.plot(kind='bar', figsize=(7,4)) 
    print_fig_info("After plot") 

    # want to make output files unique 
    c += 1 
    plt.savefig("output"+str(c), bbox_inches='tight', dpi='figure') 

答えて

1

。 つまり、bbox_inches='tight'は、図形のサイズを最小境界ボックスに変更するために特に設計されているため、matplotlibは要求されていることをやっています。

解決方法:bbox_inches='tight'を使用しないでください。

+0

私が正しく理解しているならば、 'savefig、bbox = 'tight''は必要に応じてFigure領域を締め付けたり、伸ばしたりします。 –

+0

初期の図形サイズの外にあるラベルを取得するには、次のようなものを使用しようとしました: 'from matplotlib.transforms import Bbox' ' plt.savefig( 'test.png'、bbox_inches = Bbox.from_extents 、-2,8,7)) ' 努力する価値があるかどうか検討する必要があります。 –

+1

同じサイズの図を作成し、その図形のサイズにコンテンツが収まることを確認する必要がある場合は、保存する前に 'plt.tight_layout()'を使うことができます。 – ImportanceOfBeingErnest