Python 3.x 防止Matplotlib barplot在PdfPages中调整大小

Python 3.x 防止Matplotlib barplot在PdfPages中调整大小,python-3.x,matplotlib,pdf-generation,bar-chart,Python 3.x,Matplotlib,Pdf Generation,Bar Chart,我试图在一个循环中创建一组条形图,并将它们全部保存到一个PDF文件中。问题在于,根据数据的不同,x轴可能有不同的长度。因此,在PDF文档中,条形图的大小都会有所不同。我希望条形图(以及其间的空间)保持不变,并且在PDF文档中不显示大小调整。我尝试了不同的参数组合,如设置fig.figsize或bbox\u tight,但没有产生预期的结果 以下是两个示例图像: 我想根据标签/数据点的数量调整x轴的大小,以便不同图形之间的条形图(以及条形图之间的间距)始终保持相同的大小 import numpy

我试图在一个循环中创建一组条形图,并将它们全部保存到一个PDF文件中。问题在于,根据数据的不同,x轴可能有不同的长度。因此,在PDF文档中,条形图的大小都会有所不同。我希望条形图(以及其间的空间)保持不变,并且在PDF文档中不显示大小调整。我尝试了不同的参数组合,如设置
fig.figsize
bbox\u tight
,但没有产生预期的结果

以下是两个示例图像:

我想根据标签/数据点的数量调整x轴的大小,以便不同图形之间的条形图(以及条形图之间的间距)始终保持相同的大小

import numpy as np
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt

outputs={"A":np.array([1.0,0]),"B":np.array([0.8, 0.1, 0.1, 0]),"C":np.array([1,0.8,0.2,0.1,0.4,0.5,0.8,0.9,1.0,0.8])}

pp=PdfPages("barplots.pdf")
fig=plt.figure()
for name,array in outputs.items():

    x=[i for i in range(len(array))]
    labels=["{}".format(i) for i in x]
    plt.figure(num=1, figsize=(len(array),1))
    plt.ylim(0,1.1)

    plt.bar(x,array,width=0.2,tick_label=labels) ## if width is set lower, spacing between bars becomes quite large

    fig.savefig(pp,format="pdf",dpi=100)
    fig.clf()
pp.close()

您能否更详细地描述所需的输出?是否要收缩轴?是否要在轴内添加额外的空格?您可能需要查看。您可以在不同的图形中创建轴,而不是子图。当然,您需要决定自由参数应该是什么(恒定条形宽度下的条形尺寸,或恒定条形尺寸下的条形宽度)。