Предотвратить изменение размера Barplot Matplotlib в PdfPages - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь сделать несколько барплетов в цикле и сохранить их все в один файл PDF. Проблема в том, что в зависимости от данных, ось х может иметь разную длину. В результате все размеры барплотов в документе PDF изменяются по-разному. Мне бы хотелось, чтобы столбцы (и промежуток между ними) оставались постоянными и не выглядели измененными в PDF-документе. Я пробовал разные комбинации параметров, такие как установка fig.figsize или bbox_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()
...