2017-09-19 7 views
0

J'essaie de créer un carquois, les longueurs vectorielles vont de 0 à 15. Je voudrais utiliser une palette de couleurs grise mais à partir de, disons, demi-plage, tel que 0. est déjà gris et 15. est noir. Ce que je l'ai fait jusqu'à présent est:Barre de couleurs personnalisée avec carquois dans matplotlib

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) 

La gamme de couleurs est correcte, mais l'ensemble est colormap indiqué dans le colorbar, à savoir à partir de la couleur blanche. Qu'est-ce qui me manque?

Répondre

1

La palette de couleurs "Gris" commence au blanc et passe au noir. En raison de votre normalisation -5 est blanc et 15 est noir.

Ce que vous semblez vouloir vraiment est une normalisation de vmin=0,vmax=15. et une palette de couleurs qui commence par une couleur grise déjà:

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")