Когда matplotlib обновляет оси bbox, и можно ли принудительно выполнить обновление? - PullRequest
1 голос
/ 07 января 2020

При создании осей на фигуре ограничивающая рамка (bbox) изменяется в некоторый момент во время построения. Я хотел бы иметь доступ к окончательным значениям bbox (например, через ax.get_position()) при запуске неинтерактивного скрипта. Как заставить значения bbox обновить без , вызвавшего вывод на экран (например, с использованием pl.pause)?

Ниже приведен минимальный пример, показывающий, что bbox обновляется, если последовательность команд вызывается в интерактивном режиме из командной строки i python, но bbox не обновляется, если используется в сценарии (в данном случае %paste d) :

In [1]: import pylab as pl

In [2]: fig = pl.figure()

In [3]: ax = fig.gca()

In [4]: print(ax.get_position())
Bbox(x0=0.125, y0=0.10999999999999999, x1=0.9, y1=0.88)

In [5]:

In [5]: im = ax.imshow([[0,1],[1,0]])

In [6]: print(ax.get_position())
Bbox(x0=0.22375000000000006, y0=0.10999999999999999, x1=0.80125, y1=0.88)

In [7]:

In [7]: cb = fig.colorbar(mappable=im)

In [8]: print(ax.get_position())
Bbox(x0=0.1675000000000002, y0=0.10999999999999999, x1=0.7450000000000001, y1=0.88)

In [9]: %paste
import pylab as pl
fig = pl.figure()
ax = fig.gca()
print(ax.get_position())

im = ax.imshow([[0,1],[1,0]])
print(ax.get_position())

cb = fig.colorbar(mappable=im)
print(ax.get_position())
## -- End pasted text --
Bbox(x0=0.125, y0=0.10999999999999999, x1=0.9, y1=0.88)
Bbox(x0=0.125, y0=0.10999999999999999, x1=0.9, y1=0.88)
Bbox(x0=0.125, y0=0.10999999999999999, x1=0.7450000000000001, y1=0.88)

In [10]: print(ax.get_position())
Bbox(x0=0.1675000000000002, y0=0.10999999999999999, x1=0.7450000000000001, y1=0.88)

Мой основной вариант использования - установка местоположения цветовой панели без с использованием набора инструментов axes_grid, поскольку это также меняет размер родительской оси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...