Вот способ рисовать изображения на разных сюжетах. xticks
на основном изображении перемещаются в верхнюю часть и удаляются с правой панели.
Тестовая функция выбрана так, чтобы иметь идентифицируемые признаки в обоих направлениях.
vmin
и vmax
используются для установки цветового диапазона: значения изображения на vmin
сопоставляются с самым низким цветом (аналогично черному для цветовой карты inferno
или белым для цветовой карты Greys
), а значения изображения на vmax
получите самый высокий цвет (желтый для inferno
, черный для Greys
). Значения изображения между vmin
и vmax
постепенно отображаются на цвета между ними. Значения изображения, меньшие vmin
, сопоставляются с одним и тем же самым низким цветом.
Важно, чтобы значения vmin
и vmax
для 3 изображений были равными, поэтому все три имеют одинаковое преобразование цвета. Если vmin
и vmax
не установлены, matplotlib вычисляет самое низкое и самое высокое значение на основе данных. Но средства обычно имеют меньший диапазон значений, поэтому соответствующие значения больше не будут окрашиваться одинаково.
Вместо установки vmin
и vmax
может быть задана норма. норма имеет аналогичную функцию, но более мощна, например, когда необходимо преобразование логарифми c.
from matplotlib import pyplot as plt
import numpy as np
x, y = np.meshgrid(np.linspace(-10, 10, 200), np.linspace(-10, 10, 200))
z = np.where((x < 7) & (y < 9), np.sin(x) + np.cos(y) ** 2, 2-np.cos(x) ** 2)
z1 = np.mean(z, axis=1).reshape(x.shape[0], 1)
z0 = np.mean(z, axis=0).reshape(1, x.shape[1])
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(7, 7),
gridspec_kw={'width_ratios': [10, 1], 'height_ratios': [10, 1], 'wspace': 0.1, 'hspace': 0.1})
vmin, vmax = -1, 2
cmap = plt.cm.inferno
extent=[-10, 10, -10, 10]
axes[0][0].imshow(z, cmap=cmap, extent=extent, vmin=vmin, vmax=vmax, aspect=1, origin='lower')
axes[0][0].xaxis.tick_top()
axes[0][1].imshow(z1, cmap=cmap, extent=extent, vmin=vmin, vmax=vmax, aspect=10, origin='lower')
axes[0][1].set_xticks([])
axes[0][1].yaxis.tick_right()
axes[1][0].imshow(z0, cmap=cmap, extent=extent, vmin=vmin, vmax=vmax, aspect=1 / 10, origin='lower')
axes[1][0].set_yticks([])
axes[1][1].axis('off')
plt.tight_layout()
plt.show()
