我怎样才能创build一个python系列图的标准颜色条

我使用matplotlib绘制python中的一些数据,并且绘图需要一个标准的颜色条。 数据由一系列包含频率信息的N×Mmatrix组成,以便简单的imshow()图给出具有描述颜色频率的2D直方图。 每个matrix包含不同但重叠范围内的数据。 Imshow将每个matrix中的数据标准化到0-1的范围,这意味着例如matrixA的绘图将与matrix2 * A的绘图相同(尽pipe颜色条将显示两倍的值)。 我想要的是红色,例如,对应于所有地块中的相同频率。 换句话说,一个单一的彩条就足够了所有的情节。 任何build议将不胜感激。

不要偷@ianilis的答案,但我想添加一个例子…

有多种方法,但最简单的就是指定vminvmax kwargs imshow 。 或者,您可以制作一个matplotlib.cm.Colormap实例并指定它,但是对于简单情况来说,这比实际需要复杂得多。

下面是所有图像的单个颜色条的一个简单示例:

 import numpy as np import matplotlib.pyplot as plt # Generate some data that where each slice has a different range # (The overall range is from 0 to 2) data = np.random.random((4,10,10)) data *= np.array([0.5, 1.0, 1.5, 2.0])[:,None,None] # Plot each slice as an independent subplot fig, axes = plt.subplots(nrows=2, ncols=2) for dat, ax in zip(data, axes.flat): # The vmin and vmax arguments specify the color limits im = ax.imshow(dat, vmin=0, vmax=2) # Make an axis for the colorbar on the right side cax = fig.add_axes([0.9, 0.1, 0.03, 0.8]) fig.colorbar(im, cax=cax) plt.show() 

在这里输入图像说明

最简单的解决方法是用每个图的相同参数调用clim(lower_limit,upper_limit)。

这只能回答问题的一半,或者说开始一个新的问题。 如果你改变

 data *= np.array([0.5, 1.0, 1.5, 2.0])[:,None,None] 

 data *= np.array([2.0, 1.0, 1.5, 0.5])[:,None,None] 

你的彩条将从0到0.5,在这种情况下是深蓝到略浅的蓝色,不会覆盖整个范围(0到2)。 色条只会显示最后一个图像或轮廓的颜色,而不pipevminvmax