防止Matplotlib barplot在PdfPages中调整大小

时间:2018-08-29 21:24:37

标签: python-3.x matplotlib pdf-generation bar-chart

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

这是两个示例图像: enter image description here enter image description here

我希望根据标签/数据点的数量来调整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()

0 个答案:

没有答案