Прежде всего, из add_axes
документации,
rect: последовательность с плавающей точкой
Размеры [слева, снизу, ширина, высота] новых осей. Все количества в
фракции ширины и высоты фигуры .
По этой причине ваш код не работает.
Вместо этого вы можете использовать inset_axes
.
inset_axes(self, bounds, transform=None, ...)
bounds
: [x0, y0, ширина, высота]
Нижний левый угол врезных осей, его ширина и высота.
transform
: преобразование
По умолчанию используется значение ax.transAxes, т. Е. Единицы прямоугольника находятся в осях относительно координат.
Здесь границы по умолчанию используются в единицах координат осей, но могут быть изменены при необходимости.
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
im = ax.imshow(np.arange(100).reshape((10, 10)))
cax = ax.inset_axes([0.78, 0.5, 0.03, 0.38])
cb = fig.colorbar(im, cax = cax)
plt.show()
Альтернативой вышеупомянутому является использование mpl_toolkits.axes_grid1.inset_locator.inset_axes
.
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
import numpy as np
fig, ax = plt.subplots()
im = ax.imshow(np.arange(100).reshape((10, 10)))
cax = inset_axes(ax, "100%", "100%", bbox_to_anchor=[0.78, 0.5, 0.03, 0.38],
bbox_transform=ax.transAxes, borderpad=0)
cb = fig.colorbar(im, cax = cax)
plt.show()