Импортировать подзаголовки с тем же цветом
Я хочу сделать 4 imshow
подзаголовки, но все они имеют один и тот же набор цветов. Matplotlib автоматически корректирует масштаб на цветовой карте в зависимости от записей матриц. Например, если одна из моих матриц имеет все 10, а вторая имеет все значения, равные 5, и я использую цветовой код Greys
, тогда один из моих подзаглавов должен быть полностью черным, а другой должен быть полностью серого. Но оба они становятся полностью черными. Как заставить все подзаголовки использовать один и тот же масштаб в цветовой палитре?
Ответы
Ответ 1
Чтобы получить это право, вам нужно иметь все изображения с одинаковой интенсивностью, иначе цвета colorbar()
не имеют смысла. Для этого используйте аргументы vmin
и vmax
imshow()
и убедитесь, что они одинаковы для всех ваших изображений.
Например, если диапазон значений, которые вы хотите показать, идет от 0 до 10, вы можете использовать следующее:
import pylab as plt
import numpy as np
my_image1 = np.linspace(0, 10, 10000).reshape(100,100)
my_image2 = np.sqrt(my_image1.T) + 3
subplot(1, 2, 1)
plt.imshow(my_image1, vmin=0, vmax=10, cmap='jet', aspect='auto')
plt.subplot(1, 2, 2)
plt.imshow(my_image2, vmin=0, vmax=10, cmap='jet', aspect='auto')
plt.colorbar()
![enter image description here]()
Ответ 2
Возможно, вы заранее не знаете диапазоны своих данных, но вы можете знать, что они как-то совместимы. В этом случае вы можете предпочесть, чтобы matplotlib выбирал эти диапазоны для первого графика и использовал тот же диапазон для остальных графиков. Вот как вы можете это сделать. Ключ состоит в том, чтобы получить ограничения с помощью properties()['clim']
import numpy as np
import matplotlib.pyplot as plt
my_image1 = np.linspace(0, 10, 10000).reshape(100,100)
my_image2 = np.sqrt(my_image1.T) + 3
fig, axes = plt.subplots(nrows=1, ncols=2)
im = axes[0].imshow(my_image1)
clim=im.properties()['clim']
axes[1].imshow(my_image2, clim=clim)
fig.colorbar(im, ax=axes.ravel().tolist(), shrink=0.5)
plt.show()