Python matplotlib中带有箭图的自定义颜色栏

Python matplotlib中带有箭图的自定义颜色栏,python,matplotlib,colorbar,colormap,Python,Matplotlib,Colorbar,Colormap,我正在尝试生成一个箭图,向量长度范围为0。到15。,我想用灰色的颜色贴图,但从半个范围开始,比如0。已经是灰色和15。它是黑色的。 到目前为止,我所做的是: cmap = cm.get_cmap('Greys', 10) norm = matplotlib.colors.Normalize(vmin=-5.,vmax=15.,clip=False) Q = ax.quiver(xi, yi, zix, ziy, lengths * 1000., units='inches', width=0.

我正在尝试生成一个箭图,向量长度范围为0。到15。,我想用灰色的颜色贴图,但从半个范围开始,比如0。已经是灰色和15。它是黑色的。 到目前为止,我所做的是:

cmap = cm.get_cmap('Greys', 10)

norm = matplotlib.colors.Normalize(vmin=-5.,vmax=15.,clip=False)
Q = ax.quiver(xi, yi, zix, ziy, lengths * 1000., units='inches', width=0.008, headwidth=6, headlength=7, scale=5,
              scale_units='inches',cmap=cmap, norm=norm)
cb = plt.colorbar(Q, cax=ax3, ticks=[0.0, 3.0, 6.0, 9.0, 12.0, 15.0], format='%.1f', norm=norm)
颜色范围正确,但整个颜色贴图显示在颜色栏中,即从白色开始。 我遗漏了什么?

“灰色”颜色贴图从白色开始,然后变为黑色。由于您的正常化-5为白色,15为黑色

您似乎真正想要的是标准化
vmin=0,vmax=15。
和一个已经以灰色开始的颜色映射:

import matplotlib.colors
norm = matplotlib.colors.Normalize(vmin=0,vmax=15.,clip=False)
cmap = matplotlib.colors.ListedColormap(plt.cm.Greys(np.linspace(0.25,1,10)), "name")