Что означает аргумент 4-элементного кортежа для 'bbox_to_anchor' в matplotlib?

В разделе "Местоположение легенды" в "Руководстве по легенде" на веб-сайте 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, я просто не знаю, почему изменение последнего значения в кортеже ничего не делало.

Ответ 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).

введите описание изображения здесь