высота цветовой шкалы в сюжете (matplotlib) - PullRequest
0 голосов
/ 26 июня 2019

Мы можем изменить высоту, ширину и положение цветовой шкалы, используя:

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np

fig = plt.figure()
ax = plt.subplot(111)
im = ax.imshow(np.arange(100).reshape((10, 10)))

c = plt.colorbar(im, cax = fig.add_axes([0.78, 0.5, 0.03, 0.38]))

из здесь ,

Я собираюсь использовать это в подзаговорах с add_axes и transorm :

enter image description here

fig, axs = plt.subplots(nrows=1, ncols=2)
im0 = axs[0].imshow(np.arange(100).reshape((10, 10)), cmap='afmhot')
c = plt.colorbar(im0, cax=fig.add_axes([0.45, 0.52, 0.03, 0.2],
                                       transform=axs[0].transAxes))
# transform=axs[0].transAxes) does not make any difference

im1 = axs[1].imshow(np.arange(100).reshape((10, 10)), cmap='afmhot_r')
c = plt.colorbar(im1, cax=fig.add_axes([0.87, 0.52, 0.03, 0.2]))

Я собираюсь использовать опцию transform (transAxes), чтобы установить местоположение из осейне цифра, но она не работает.

1 Ответ

1 голос
/ 26 июня 2019

Прежде всего, из 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...