2017-07-02 33 views
0

我想將標籤放在圖上。我的代碼是一樣基於分類類別在matplotlib圖中提及標籤

import matplotlib.pyplot as plt 
x1 = [1,2,3,4,5,6,7,8,9,10] 
x2 = [7,3,2,4,1,4,3,5,8,4] 
y = [0,1,1,0,1,0,0,1,0,1] 
plt.scatter(x1,x2,c=y) 
plt.show() 

輸出:

plot of x1 vs x2

我希望把傳說標籤上圖和。如果標籤是假的或真的,那麼它很好?

可以理解的,如果答案是沒有任何迭代

+0

目前還不清楚你想放什麼樣的標籤以及在哪裏。 – DyZ

+0

你的意思是你想要把每個黃點和每個黑點都設爲1? – OldGeeksGuide

+0

嘗試檢查這些鏈接 - https://matplotlib.org/users/annotations_intro.html和https://matplotlib.org/api/text_api.html#module-matplotlib.text – OldGeeksGuide

回答

0

在像matplotlib scatterplot with legendMatplotlib scatter plot with legend原則問題,展示如何得到一個散點圖一個傳奇。

由於您明確要求不要迭代,您當然可以用映射替換迭代。

import matplotlib.pyplot as plt 
import numpy as np 

x1 = [1,2,3,4,5,6,7,8,9,10] 
x2 = [7,3,2,4,1,4,3,5,8,4] 
y = [0,1,1,0,1,0,0,1,0,1] 
plt.scatter(x1,x2,c=y, cmap="viridis") 

yunique = np.unique(y).astype(float) 
handles = list(map(lambda i: plt.plot([], 
       color=plt.cm.viridis(i),marker="o", ls="")[0], yunique)) 
labels = list(map(str, yunique.astype(bool))) 
plt.legend(handles=handles, labels=labels) 

plt.show() 

enter image description here

注意,這是一個純粹的學術例子,它是非常容易使用一個for循環。