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