pandas.plot和pyplot.save_fig为同一figsize创建不同大小的PNG

pandas.plot和pyplot.save_fig为同一figsize创建不同大小的PNG,pandas,matplotlib,Pandas,Matplotlib,当我调用使用相同figsize的pandas.plot的同一个函数时,会得到不同大小的PNG文件。宽度相同,但以像素为单位的高度发生变化。我怀疑x轴标签的长度会改变高度。我还没有尝试直接调用matplotlib函数 我还尝试了plt.rcParams['figure.figsize']=7,4。问题似乎不在于figsize的设置方式。我的打印图信息总是产生期望值 # Primitive way that confirmed that the figure size does not change

当我调用使用相同figsize的pandas.plot的同一个函数时,会得到不同大小的PNG文件。宽度相同,但以像素为单位的高度发生变化。我怀疑x轴标签的长度会改变高度。我还没有尝试直接调用matplotlib函数

我还尝试了plt.rcParams['figure.figsize']=7,4。问题似乎不在于figsize的设置方式。我的打印图信息总是产生期望值

# 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')
在调用savefig时,您明确要求matplotlib将figsize更改为最小尺寸,以便通过bbox_inches='tight'仍然适合所有元素。 或者换句话说,bbox_inches='tight'是专门为将图形大小更改为最小边界框而设计的,因此matplotlib正在执行要求的操作


解决方案:不要使用bbox_inches='tight'。

因此,如果我理解正确,要获得紧密配合,savefig,bbox='tight'将根据需要拧紧或扩展体形区域。要获得超出初始体形尺寸的标签,我可以尝试使用类似于:从MatPlutlb.转换导入BBox PLT。SaveFig.Test.PNG,BBOXYROUNK= BBOS.FROX-ExtEXTS0,-2,8,7需要考虑是否值得付出努力。如果您的目标是产生相同大小的图形,并且需要确保内容符合给定的图形大小,您可以在保存之前使用plt.tight_布局。非常好的建议。我没有意识到这一点。谢谢你的帮助,不仅仅是眼前的问题。