我在将具有不同范围 (8.53,9.09) 和 (9.55,10.83) 的两个直方图子图映射到一个颜色条时遇到问题。但是颜色条是使用第一个或第二个子图中的 pcolormesh 绘制的,并且因为它们没有重叠,颜色条不能显示正确的颜色。
#first histogram subplot
binx=np.linspace(9.1,11.35,20)
biny=np.linspace(-1.45,0.8,20)
median=np.random.uniform(9.55,10.83, size=(20,20))
#finding min and max values of median
dim=np.size(median)
median1=np.reshape(median, (dim, ))
median1=median1[median1!=0]
vmin1=np.sort(median1)[0]
vmax1=np.sort(median1)[-1]
hist1=ax1.pcolormesh(binx, biny, median.T, norm=LogNorm(), cmap='viridis')
hist1.set_clim(vmin1,vmax1)
#the second subplot histogram
man_mass=np.linspace(9.1,11.35,16)
man_sfr=np.linspace(-1.45,0.8,16)
man_med=np.array([[0.,0.,0.,0.,0.,0.,0.,8.56,0.,0.,0.,0.,0.,0.,0.,0.],
[0.,0.,0.,0.,0.,8.7,8.7,8.65,8.58,8.53,0.,0.,0.,0.,0.,0.],
[0.,0.,8.77,8.76,8.73,8.75,8.76,8.71,8.69,8.64,8.58,8.53,0.,0.,0.,0.],
[0.,8.83,8.82,8.82,8.81,8.79,8.79,8.77,8.78,8.74,8.69,8.66,8.59,0.,0.,0.],
[8.90,8.90,8.90,8.88,8.88,8.87,8.86,8.85,8.83,8.81,8.79,8.72,8.69,8.64,8.63,0.],
我希望我的颜色条显示从中值的最小值到最大值(从 vmin2=8.53 到 vmax1=10.83)的值(颜色),并且直方图显示正确的颜色。这段代码显示:颜色条映射到第一个直方图(颜色范围(9.55,10.83)),并且子图的颜色没有连接,所以我在第一个子图上有深蓝色为 9.55,第二个为 8.53,最亮的黄色第一个子图为 10.83,第二个为 9.09。
请注意:这篇文章Set Colorbar Range in matplotlib应该可以回答我的问题,但对我不起作用,我不知道为什么。其中颜色范围重叠,因此他们可以使用 plt.colorbar 中的最后一个图像。我不能这样做,因为我的范围不重叠,我只想扩展颜色条以包括两个范围。
温温酱
相关分类