2013-04-28 44 views

回答

3

见下面的例子:

from matplotlib.colors import LinearSegmentedColormap 
import matplotlib.pyplot as plt 
import numpy as np 

def CustomCmap(from_rgb,to_rgb): 

    # from color r,g,b 
    r1,g1,b1 = from_rgb 

    # to color r,g,b 
    r2,g2,b2 = to_rgb 

    cdict = {'red': ((0, r1, r1), 
        (1, r2, r2)), 
      'green': ((0, g1, g1), 
        (1, g2, g2)), 
      'blue': ((0, b1, b1), 
        (1, b2, b2))} 

    cmap = LinearSegmentedColormap('custom_cmap', cdict) 
    return cmap 


fig, ax = plt.subplots(2,2, figsize=(6,6), subplot_kw={'xticks': [],'yticks': []}) 
fig.subplots_adjust(hspace=.1,wspace=.1) 

ax = ax.ravel() 

cmap1 = CustomCmap([0.00, 0.00, 0.00], [0.02, 0.75, 1.00]) # from black to +/- 5,192,255 
cmap2 = CustomCmap([1.00, 1.00, 1.00], [0.02, 0.75, 1.00]) # from white to +/- 5,192,255 
cmap3 = CustomCmap([1.00, 0.42, 0.04], [0.02, 0.75, 1.00]) # from +/- 255,108,10 to +/- 5,192,255 
cmap4 = CustomCmap([1.00, 0.42, 0.04], [0.50, 0.50, 0.50]) # from +/- 255,108,10 to grey (128) 


ax[0].imshow(np.random.rand(30,30), interpolation='none', cmap=cmap1) 
ax[1].imshow(np.random.rand(30,30), interpolation='none', cmap=cmap2) 
ax[2].imshow(np.random.rand(30,30), interpolation='none', cmap=cmap3) 
ax[3].imshow(np.random.rand(30,30), interpolation='none', cmap=cmap4) 

enter image description here