我使用matplotlib在python中绘制一些数据,并且绘制需要标准颜色条。数据由一系列包含频率信息的NxM矩阵组成,因此,一个简单的imshow()图就可以得出带有颜色描述频率的2D直方图。每个矩阵包含不同但重叠范围内的数据。 Imshow将每个矩阵中的数据归一化为0-1范围,这意味着,例如,矩阵A的图将看起来与矩阵2 * A的图相同(尽管颜色条将显示值的两倍)。我想要的是红色,例如,在所有图中对应于相同的频率。换句话说,单个色条就足以满足所有图的需要。任何建议将不胜感激。

最佳答案

不要窃取@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()

关于python - 如何在python中为一系列绘图创建标准颜色条,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7875688/

10-12 19:06