Я новичок в python и имею некоторые трудности с построением графика, используя pyplot
. Моя цель - построить сетку графиков в строке (%pylab inline
) в ноутбуке Juypter.Использование pyplot для создания сетки графиков
Я запрограммировал функцию plot_CV
, которая вычисляет перекрестную проверку erorr над степенью полинома некоторого x, где на разных участках предполагается, что степень штрафа (лямбда) изменяется. В конечном итоге в лямбда есть 10 элементов, и они контролируются первым аргументом в plot_CV
. Так
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1 = plot_CV(1,CV_ve=CV_ve)
дает
Теперь я думаю, что я должен использовать add_subplot
, чтобы создать сетку участков, как в
fig = plt.figure()
ax1 = fig.add_subplot(2,2,1)
ax1 = plot_CV(1,CV_ve=CV_ve)
ax2 = fig.add_subplot(2,2,2)
ax2 = plot_CV(2,CV_ve=CV_ve)
ax3 = fig.add_subplot(2,2,3)
ax3 = plot_CV(3,CV_ve=CV_ve)
ax4 = fig.add_subplot(2,2,4)
ax4 = plot_CV(4,CV_ve=CV_ve)
plt.show()
Если я буду продолжать это , однако, тогда графики становятся все меньше и меньше и начинают перекрываться на ярлыках x и y. Вот картина с сюжетом 3 на 3.
Есть ли способ пространства участки равномерно, так, чтобы они не перекрывали друг друга и лучше использовать горизонтальное и вертикальное пространство в линии в Jupyter Notebook? Чтобы проиллюстрировать этот момент здесь скриншот из jupyter:
Конечная нота: мне еще нужно добавить заголовок или аннотацию с текущим уровнем лямбда, используемого в plot_CV
.
Edit: Используя плотную компоновку, как предложено, дает:
Edit 2: Использование fig.set_figheight
и fig.set_figwidth
я мог, наконец, использовать всю длину и доступный.
Вы пытались '' '' plt.tight_layout() '' 'перед' '' plt.show() '' '. В противном случае вам придется уменьшить частоту метки и размеры метки оси. – sascha
@sascha спасибо, см. Обновление – tomka