2011-12-02 2 views
1

enter image description herecolorbar de matplotlib sur mesure

colors = ['white', '#FFFFBB', '#C3FDB8', '#B5EAAA', '#64E986', '#54C571', 
      '#4AA02C','#347C17','#347235','#25383C','#254117'] 

J'ai fait un terrain en utilisant matplotlib (semblable à un heatmap) Je voudrais soit:

1) faire une légende en utilisant les couleurs I définis dans la liste ou
2) est-il possible de l'automatiser dans matplotlib pour créer un effet aussi beau que R? le gradient normal de couleur de matplotlib est trop "pointu" ...

Merci!

+0

Avez-vous regardé les (http://www.scipy.org/Cookbook/Matplotlib/Show_colormaps) [autres colormaps] - il semble comme "l'été" est proche de ce que vous avez utilisé, avec le blanc étant des valeurs nulles. – cosmosis

Répondre

0

assez simple en utilisant ListedColormap:

import matplotlib.cm as cm # color map 
import matplotlib.gridspec as gridspec 
import matplotlib as mpl 
import numpy as np 

#dummy data 
hm = np.random.randint(0, 100, size=(5, 5)) 

#define colors 
cmap = mpl.colors.ListedColormap(['white', '#FFFFBB', '#C3FDB8', '#B5EAAA', '#64E986', '#54C571', 
      '#4AA02C', '#347C17', '#347235', '#25383C', '#254117']) 

#create plot frames 
gs = gridspec.GridSpec(2,2, height_ratios=[6,2], width_ratios=[20,1],) 
ax = plt.subplot(gs[0, 0]) 

#heatmap and colorbar 
im = ax.pcolor(hm, cmap=cmap) 
cbar = plt.colorbar(im, cax=plt.subplot(gs[1])) 

plt.show() 

heatmap

Questions connexes