我有以下代码:
import matplotlib.pyplot as plt
cdict = {
'red' : ( (0.0, 0.25, .25), (0.02, .59, .59), (1., 1., 1.)),
'green': ( (0.0, 0.0, 0.0), (0.02, .45, .45), (1., .97, .97)),
'blue' : ( (0.0, 1.0, 1.0), (0.02, .75, .75), (1., 0.45, 0.45))
}
cm = m.colors.LinearSegmentedColormap('my_colormap', cdict, 1024)
plt.clf()
plt.pcolor(X, Y, v, cmap=cm)
plt.loglog()
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.colorbar()
plt.show()
这将在X和Y轴上绘制数值'v'的图形,使用指定的颜色映射。X和Y轴是完美的,但是颜色映射会在v的最小值和最大值之间分布。我希望强制将颜色映射范围限定在0到1之间。
我考虑使用:
plt.axis(...)
为了设置坐标轴的范围,但这只能接受X和Y的最小值和最大值作为参数,而不能接受颜色映射。
编辑:
为了清晰起见,假设我有一张图的值范围为(0…0.3),另一张图的值范围为(0.2…0.8)。
在这两张图中,我都希望颜色条的范围为(0…1)。在这两张图中,我希望使用上面完整的cdict范围来确保颜色范围相同(因此在两张图中,0.25将是相同的颜色)。在第一张图中,所有0.3到1.0之间的颜色都不会出现在图中,但会出现在侧边的颜色条键中。在另一张图中,所有介于0和0.2之间以及介于0.8和1之间的颜色都不会出现在图中,但会出现在侧边的颜色条中。