2016-05-30 2 views
2

私はmatplotlibのでヒートマップをプロットするためにmatplotlib.pyplot.pcolor()を使用します。matplotlibのカラーマップの輝度を変更するにはどうすればよいですか?

import numpy as np 
import matplotlib.pyplot as plt  

np.random.seed(1) 
data = np.sort(np.random.rand(8,12)) 
plt.figure() 
c = plt.pcolor(data, edgecolors='k', linewidths=4, cmap='RdBu', vmin=0.0, vmax=1.0) 
plt.colorbar(c) 
plt.show() 

enter image description here

にはどうすれば'RdBu'カラーマップの強さを変更できますか?たとえば、色が(0, 0, 1)の場合は、(0, 0, 0.8)に変換する必要があります。より一般的には、 の色が(x, y, z)の場合は、(ax, ay, az)に変換する必要があります.aは0と1の間のスカラーです。

答えて

5

これは、スタンリー・Rさん(編集:今セレニティ)と非常によく似ているループの(私の意見では)不必要な複雑させずに答え、リストへの追加、エトセトラ:

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

a = 0.5 

# Get the colormap colors, multiply them with the factor "a", and create new colormap 
my_cmap = plt.cm.RdBu(np.arange(plt.cm.RdBu.N)) 
my_cmap[:,0:3] *= a 
my_cmap = ListedColormap(my_cmap) 

np.random.seed(1) 
data = np.sort(np.random.rand(8,12)) 
plt.figure() 
plt.subplot(121) 
c = plt.pcolor(data, edgecolors='k', linewidths=4, cmap='RdBu', vmin=0.0, vmax=1.0) 
plt.colorbar(c) 
plt.subplot(122) 
c = plt.pcolor(data, edgecolors='k', linewidths=4, cmap=my_cmap, vmin=0.0, vmax=1.0) 
plt.colorbar(c) 
plt.show() 

enter image description here

2

標準に基づいて新しいカスタムカラーマップを組み立てる必要があります。

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import cm 

np.random.seed(1) 
data = np.sort(np.random.rand(8,12)) 
plt.figure() 
cmap = cm.get_cmap('RdBu', len(data)) # set how many colors you want in color map 
# modify colormap 
alpha = .5 
colors = [] 
for ind in xrange(cmap.N): 
    c = [] 
    for x in cmap(ind)[:3]: c.append(x*alpha) 
    colors.append(tuple(c)) 
my_cmap = matplotlib.colors.ListedColormap(colors, name = 'my_name') 
# plot with my new cmap 
cb = plt.pcolor(data, edgecolors='k', linewidths=4, cmap=my_cmap, vmin=0.0, vmax=1.0) 
plt.colorbar(cb) 
plt.show() 

enter image description here

関連する問題