2015-10-19 184 views
0

我必須做一個散點圖,顏色取決於第三個變量。 如果變量介於0和1之間,則給予「藍色」,1-2,紅色,2-3,紫色,3-4,綠色,4-5灰色。 我該怎麼做?如何根據一定的規則改變散點圖顏色

x = [1,2,3,4,5] 
y = [3,4,2,3,4] 
c = [1,2,4,0.5,5] 
+0

編輯:我固定通過迭代的C列表,並給它一個特定的顏色取決於它的價值 – Diiru

回答

1

如果你想爲特定的顏色表邊界您可以用mpl.colors.ListedColormap一起使用mpl.colors.BoundaryNorm

import matplotlib.pyplot as plt 
import matplotlib as mpl 

x = [1,2,3,4,5] 
y = [3,4,2,3,4] 
c = [1,2,4,0.5,5] 

cmap = mpl.colors.ListedColormap(['blue','red','magenta', 'green', 'gray']) 
c_norm = mpl.colors.BoundaryNorm(boundaries=[0,1,2,3,4,5], ncolors=5) 
plt.scatter(x, y, c=c, s=200, cmap=cmap, norm=c_norm) 
plt.colorbar() 
plt.show() 

哪個給出了這樣的情節:

enter image description here

+0

謝謝!很有用。 – Diiru

0

您可以創建和使用上市顏色表:

import matplotlib as mpl 
import matplotlib.pyplot as plt 

x = [1,2,3,4,5] 
y = [3,4,2,3,4] 
c = [1,2,4,0.5,5]  
cmap = mpl.colors.ListedColormap([[1., 0., 0.], 
            [0., 1., 0.], 
            [0., 0., 1.]]) 
plt.scatter(x, y, c=c, s=100, cmap=cmap) 
plt.show() 
+0

你實際上並沒有設置每種顏色的邊界使用這種方法,只是色彩地圖。對於'c'列表不同於這個例子,你會得到錯誤的顏色。 –