我想制作 4 imshow
子图,但它们都共享相同的颜色图。 Matplotlib 会根据矩阵的条目自动调整颜色图上的比例。例如,如果我的一个矩阵的所有整数为 10,另一个矩阵的所有条目都等于 5,并且我使用 Greys
颜色图,那么我的一个子图应该是完全黑色的,另一个应该是完全灰色。但他们俩最终都变成了全黑。如何使所有子图在颜色图上共享相同的比例?
原文由 lovespeed 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想制作 4 imshow
子图,但它们都共享相同的颜色图。 Matplotlib 会根据矩阵的条目自动调整颜色图上的比例。例如,如果我的一个矩阵的所有整数为 10,另一个矩阵的所有条目都等于 5,并且我使用 Greys
颜色图,那么我的一个子图应该是完全黑色的,另一个应该是完全灰色。但他们俩最终都变成了全黑。如何使所有子图在颜色图上共享相同的比例?
原文由 lovespeed 发布,翻译遵循 CC BY-SA 4.0 许可协议
当数据(data1 和 data2)集的范围未知并且您想对两个/所有图使用相同的颜色条时,找到整体最小值和最大值以用作 vmin
和 vmax
在对 imshow
的调用中:
import numpy as np
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=1, ncols=2)
# generate randomly populated arrays
data1 = np.random.rand(10,10)*10
data2 = np.random.rand(10,10)*10 -7.5
# find minimum of minima & maximum of maxima
minmin = np.min([np.min(data1), np.min(data2)])
maxmax = np.max([np.max(data1), np.max(data2)])
im1 = axes[0].imshow(data1, vmin=minmin, vmax=maxmax,
extent=(-5,5,-5,5), aspect='auto', cmap='viridis')
im2 = axes[1].imshow(data2, vmin=minmin, vmax=maxmax,
extent=(-5,5,-5,5), aspect='auto', cmap='viridis')
# add space for colour bar
fig.subplots_adjust(right=0.85)
cbar_ax = fig.add_axes([0.88, 0.15, 0.04, 0.7])
fig.colorbar(im2, cax=cbar_ax)
原文由 airdas 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答3.1k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
4 回答1.9k 阅读
3 回答1.7k 阅读
1 回答1.4k 阅读✓ 已解决
要做到这一点,您需要让所有图像具有相同的强度等级,否则
colorbar()
颜色是没有意义的。为此,请使用vmin
和vmax
imshow()
参数,并确保它们对所有图像都相同。例如,如果要显示的值范围从 0 到 10,则可以使用以下内容: