簡體   English   中英

Python matplotlib散點圖:根據給定條件更改數據點的顏色

[英]Python matplotlib scatter plot : changing colour of data points based on given conditions

我有以下數據(四個等長陣列):

a = [1, 4, 5, 2, 8, 9, 4, 6, 1, 0, 6]
b = [4, 7, 8, 3, 0, 9, 6, 2, 3, 6, 7]
c = [9, 0, 7, 6, 5, 6, 3, 4, 1, 2, 2]
d = [La, Lb, Av, Ac, Av, By, Lh, By, Lg, Ac, Bt]

我正在制作數組a,b,c的3d圖:

import pylab
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(a,b,c)

plt.show()

現在, 我想使用名為'd'的數組為這些散亂的點着色 ,這樣; 如果d中對應的'i'元素值的第一個字母是'L',則將該點着色為紅色,如果它以'A'開始,則將其着色為綠色,如果以'B'開頭,則將其着色為藍色。

因此,第一點(1,4,9)應為紅色,第二點(4,7,0)應為紅色,第三點(5,8,7)應為綠色等等。

有可能這樣做嗎? 如果你有一些想法請幫助:)

正如散點文檔所解釋的那樣,您可以傳遞c參數:

c:顏色或顏色序列,可選,默認

c可以是單色格式字符串,或長度為N的顏色規范序列,或使用通過kwargs指定的cmap和norm映射到顏色的N個數字序列(見下文)。 請注意,c不應該是單個數字RGB或RGBA序列,因為它與要進行顏色映射的值數組無法區分。 然而,c可以是2-D陣列,其中行是RGB或RGBA。

所以像

use_colours = {"L": "red", "A": "green", "B": "blue"}
ax.scatter(a,b,c,c=[use_colours[x[0]] for x in d],s=50)

應該產生

有色點

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter

c : color or sequence of color, optional, default

“c可以是單色格式字符串,也可以是長度為N的顏色規范序列,或者使用通過kwargs指定的cmap和norm映射到顏色的N個數字序列(請參閱下文)。請注意,c不應該是單個數字RGB或RGBA序列,因為它與要進行顏色映射的值數組無法區分。但c可以是一個二維數組,其中行是RGB或RGBA。

你試過這個嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM