![](/img/trans.png)
[英]Change colour of data points on selection and remove them with key press in matplotlib 3d scatter plot
[英]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.