Мне нужно использовать matplotlib, чтобы показать и сохранить диаграмму коробочного графика.
Но количество категорий является переменным, поэтому у меня не может быть фиксированного размера фигуры, и размер фигуры (область холста) должен быть отрегулированна основе количества категорий.
Я изо всех сил стараюсь, чтобы это работало динамично.
Когда у меня всего несколько категорий, диаграмма в порядке, но случай ниже (131 категории) Я получаю следующий график:

Итак, я полагаю, что мне нужно каким-то образом установить размер одного поля (илизаполнитель для пустой серии), а затем диаграмма увеличивается на основе box_size * number_of_classes.
Ниже кода, который я пробовал.
f = plt.figure()
# f = plt.figure(figsize=(len(classes) * 2, 50))
# Create an axes instance
ax = f.add_subplot(111)
## add patch_artist=True option to ax.boxplot()
## to get fill color
bp = ax.boxplot(data_to_plot, patch_artist=True)
## change outline color, fill color and linewidth of the boxes
for box in bp['boxes']:
# change outline color
box.set( color='#7570b3', linewidth=2)
# change fill color
box.set( facecolor = '#1b9e77' )
## change color and linewidth of the whiskers
for whisker in bp['whiskers']:
whisker.set(color='#7570b3', linewidth=2)
## change color and linewidth of the caps
for cap in bp['caps']:
cap.set(color='#7570b3', linewidth=2)
## change color and linewidth of the medians
for median in bp['medians']:
median.set(color='#b2df8a', linewidth=2)
## change the style of fliers and their fill
for flier in bp['fliers']:
flier.set(marker='o', color='#e7298a', alpha=0.5)
## Custom x-axis labels
ax.set_xticklabels(classes)
## Remove top axes and right axes ticks
ax.get_xaxis().tick_bottom()
ax.get_yaxis().tick_left()
if boxplot_output is not None:
os.makedirs(boxplot_output, exist_ok=True)
f.savefig(os.path.join(boxplot_output,'box_plot.png'), bbox_inches='tight')
if show:
plt.show()
plt.close(f)
Как я могу заставить его работать?
С наилучшими пожеланиями.Клейсон Риос.