我必須做一個散點圖,顏色取決於第三個變量。 如果變量介於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和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]
如果你想爲特定的顏色表邊界您可以用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()
哪個給出了這樣的情節:
謝謝!很有用。 – Diiru
您可以創建和使用上市顏色表:
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()
你實際上並沒有設置每種顏色的邊界使用這種方法,只是色彩地圖。對於'c'列表不同於這個例子,你會得到錯誤的顏色。 –
編輯:我固定通過迭代的C列表,並給它一個特定的顏色取決於它的價值 – Diiru