В разделе "Местоположение легенды" в "Руководстве по легенде" на веб-сайте matplotlib есть небольшая script, где строка 9 plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=2, mode="expand", borderaxespad=0.)
. Все кортежи, которые я видел в bbox_to_anchor
, имеют в нем 2 элемента, но у этого есть 4. Что означает каждый элемент, если в кортеле есть 4 элемента?
Я смотрел на него в pyplot.legend
docs, и он сказал что-то о координатах bbox_transform
. Поэтому я огляделся и нашел matplotlib.transforms.Bbox
с static from_bounds(x0, y0, width, height)
.
Я предполагал, что настройка для 4-кортежа была основана на этом from_bounds
. Я скопировал script в Spyder, сделал %matplotlib
в консоли Ipython и изменил некоторые значения. Это, казалось, имело смысл, но когда я попытался только изменить .102
на что-то вроде 0.9
, легенда не изменилась. Я думаю, что кортеж основан на from_bounds
, я просто не знаю, почему изменение последнего значения в кортеже ничего не делало.
Что означает аргумент 4-элементного кортежа для 'bbox_to_anchor' в matplotlib?
Ответ 1
Вы правы, 4-кортеж в plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3)
устанавливается как (x0, y0, width, height)
, где (x0,y0)
- нижние левые угловые координаты ограничивающего прямоугольника.
Пока эти параметры устанавливают ограничительную рамку для легенды, фактический вертикальный размер легенды уменьшается до размера, необходимого для помещения элементов. Дальнейшая его позиция определяется только в сочетании с параметром loc
. Параметр loc задает выравнивание легенды внутри ограничивающей рамки, так что в некоторых случаях разница не будет замечена при изменении height
, сравните, например, (2) и (4).