在matplotlib pyplot中将色图与Iris数据集一起使用会产生错误

时间:2018-07-23 11:07:52

标签: python matplotlib

我正在尝试使用Iris数据集形式sklean的颜色图。当我使用Seaborn的de数据集时,Colormaps可以按预期工作,但是我不知道为什么它不适用于sklearn集。有什么建议吗?

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# works
iris = sns.load_dataset('iris')
colors = {'setosa': 0, 'versicolor': 1, 'virginica': 2}
plt.scatter(x=iris.sepal_length, y=iris.sepal_width, c=[colors[i] for i in iris.species], cmap='viridis')
plt.show()

# does not work
from sklearn.datasets import load_iris
iris = load_iris()
plt.scatter(x=iris.data[:,[0]], y=iris.data[:,[1]], c=iris.target, cmap='viridis')
plt.show()

2 个答案:

答案 0 :(得分:2)

用于x和y坐标的数组的形状需要与用于颜色映射的数组的形状匹配。在此,x和y数组的形状为(150,1),而c数组的形状为(150,)。如果结果为一维数组,最好不要使用列表为数组建立索引,即使用iris.data[:,0]代替iris.data[:,[0]]

plt.scatter(x=iris.data[:,0], y=iris.data[:,1], c=iris.target, cmap='viridis')

答案 1 :(得分:0)

将颜色列表作为单例列表。

  

c=[[i] for i in iris.target]