2016-01-30 64 views
1

似乎无法弄清楚为什么我的图例缺少其他两个目标名称。matplotlib散点图图例中缺少标签

%matplotlib inline 
import matplotlib.pyplot as plt 
from sklearn import datasets 


iris=datasets.load_iris() 
plt.figure(figsize=(8,8)) 
plt.scatter(iris.data[:, 0], iris.data[:, 2], c=iris.target) 
plt.xlabel(iris.feature_names[0]) 
plt.ylabel(iris.feature_names[2]) 
plt.title('Iris Dataset') 
plt.legend(iris.target_names, loc='lower right') 

enter image description here

回答

2

这可能不是最好的解决办法,但你会通过不同的目标类型必须循环,并呼吁散射具有特定颜色和标签的说法:

import matplotlib.pyplot as plt 
from sklearn import datasets 

iris=datasets.load_iris() 
plt.figure(figsize=(8,8)) 

for target in set(iris.target): 
    print target 
    x = [iris.data[i,0] for i in range(len(iris.target)) if iris.target[i]==target] 
    y = [iris.data[i,2] for i in range(len(iris.target)) if iris.target[i]==target] 
    plt.scatter(x, y, color=['red', 'blue', 'green'][target], label=iris.target_names[target]) 
plt.xlabel(iris.feature_names[0]) 
plt.ylabel(iris.feature_names[2]) 
plt.title('Iris Dataset') 
plt.legend(iris.target_names, loc='lower right') 
plt.show() 

This is the results of this code.