Colorbar меняет размер субплота в python - PullRequest
3 голосов
/ 27 февраля 2020

Я использую следующий код для генерации изображений по размеру, и мне нужно добавить цветную полосу только ко второму изображению в строке. Я использую следующий код для него

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import matplotlib.gridspec as gridspec

def plotting(x):
    gs1 = gridspec.GridSpec(1, 2)
    gs1.update(wspace=0.005, hspace=0.005)
    plt.subplot(gs1[0])
    plt.imshow(x)
    plt.axis('off')
    plt.title('dog')
    ax1 = plt.subplot(gs1[1])
    imc = plt.imshow(x, cmap='hot', interpolation='nearest')
    plt.axis('off')
    plt.title('dog')
    divider = make_axes_locatable(ax1)
    cax = divider.append_axes("right", size="5%", pad=0.05)
    plt.colorbar(imc, cax=cax)
    plt.tight_layout() 
    plt.show()

Однако получается, что размер изображения рядом не одинаков. Интересно, как я мог решить эту проблему? enter image description here

1 Ответ

3 голосов
/ 27 февраля 2020

Вы можете использовать ImageGrid , который был создан именно для этой цели:

from mpl_toolkits.axes_grid1 import ImageGrid

x = np.random.random(size=(10,10))


fig = plt.figure()
grid = ImageGrid(fig, 111,
                nrows_ncols = (1,2),
                axes_pad = 0.05,
                cbar_location = "right",
                cbar_mode="single",
                cbar_size="5%",
                cbar_pad=0.05
                )

grid[0].imshow(x)
grid[0].axis('off')
grid[0].set_title('dog')

imc = grid[1].imshow(x, cmap='hot', interpolation='nearest')
grid[1].axis('off')
grid[1].set_title('dog')

plt.colorbar(imc, cax=grid.cbar_axes[0])

enter image description here

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