При создании осей на фигуре ограничивающая рамка (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
, поскольку это также меняет размер родительской оси.