我试图循环制作一堆条状线,并将它们全部保存到一个PDF文件中。问题是,取决于数据,x轴的长度可能不同。结果,在PDF文档中,条形图的大小都不同。我希望条形图(及其之间的间隔)保持不变,并且不要在PDF文档中显示其大小。我尝试了不同的参数组合,例如设置fig.figsize
或bbox_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()