2015-06-10 103 views
1

從另一篇文章中,我得到了如何創建圖,但我正在努力添加比例尺。 從顏色打印項目給[ 0.53800422 0.67490159 0.99172189 1.],我猜是縮放的顏色?將顏色條添加到3變量顏色圖

my_array = range(20) 
my_array2 = my_array 
z = np.array(my_array)  
x = np.asarray(my_array)  
scaled_x = (x - x.min())/x.ptp() 
scaled_z = (z - z.min())/z.ptp() 
colors = plt.cm.coolwarm(scaled_z) 
graph = plt.scatter(my_array, my_array2, c = colors, cmap = colors) 
cb = plt.colorbar(graph) 
cb.set_label('mean value') 
plt.show() 

回答

1

我認爲你對於cmap的論點應該是什麼都略有混淆。它可以是色彩映射對象(例如plt.cm.coolwarm)或色彩映射的名稱(例如"coolwarm")。

你試圖通過明確的顏色。 ([ 0.53800422 0.67490159 0.99172189 1.]是您的特定數據點中的顏色映射將產生的紅色,綠色,藍色和alpha值。)

而不是計算明確的顏色,直接傳入顏色映射對象。

例如,假設你上面的例子代碼,你可以把它重新寫爲:

import numpy as np 
import matplotlib.pyplot as plt 

my_array = np.arange(20) 
my_array2 = my_array 
z = my_array 

graph = plt.scatter(my_array, my_array2, c=z, cmap=plt.cm.coolwarm) 
cb = plt.colorbar(graph) 
cb.set_label('mean value') 

plt.show() 

enter image description here

如果你願意,你也可以使用一個稍微不同的風格:

import numpy as np 
import matplotlib.pyplot as plt 

x = np.arange(20) 
y, z = x, x 

fig, ax = plt.subplots() 
graph = ax.scatter(x, y, c=z, cmap='coolwarm', s=200) 
cb = fig.colorbar(graph) 

cb.set_label('Mean Value', rotation=-90, va='bottom') 
ax.margins(0.1) 

plt.show() 

enter image description here