为什么matplotlib显示的数字有三种以上的颜色,而我只有三个标签?

时间:2016-03-28 09:20:28

标签: python matplotlib

我开始学习使用matplotlib来绘制数字。 当我使用着名的iris数据集并尝试绘制情节图时,我遇到了一个问题。

import numpy as np
import pandas as pd
import matplotlib.pylab as pl

raw = pd.read_csv('iris.csv')
data = raw.values
print data
x = data[:,0]
y = data[:,1]
pl.scatter(x,y,color = ['r','g','b'], s = [30,40,50], alpha=0.5)
pl.figure()
pl.show()
labels = set(data[:,4])
print labels

我得到了输出

 ...
 [6.7 3.3 5.7 2.5 'Iris-virginica']
 [6.7 3.0 5.2 2.3 'Iris-virginica']
 [6.3 2.5 5.0 1.9 'Iris-virginica']
 [6.5 3.0 5.2 2.0 'Iris-virginica']
 [6.2 3.4 5.4 2.3 'Iris-virginica']
 [5.9 3.0 5.1 1.8 'Iris-virginica']]
set(['Iris-virginica', 'Iris-setosa', 'Iris-versicolor'])

我只使用前两个功能,因为我不知道是否可以绘制高维数字。

这是我得到的数字 enter image description here

超过三种颜色,而您可以从输出中看到,确实有三个标签('Iris-virginica', 'Iris-setosa', 'Iris-versicolor')

我想知道matplotlib如何决定使用什么颜色? 有哪些不同的颜色?

如何显示三色情节图?

1 个答案:

答案 0 :(得分:1)

您使用pyplot.scatter获得此数字,更具体地说是使用以下代码行:

x

在上面的行中,没有关于标签的任何迹象。 yscatter只是两个数字列表。

要为点着色,color=['r', 'g', 'b']使用参数color。如果x的大小与ycolor相同,则每个点都有一个定义的颜色。但如果x小于yscatter,那么color将根据需要多次循环x = [1, 2, 3, 4, 5] color = ['r', 'g', 'b'] becomes ['r', 'g', 'b', 'r', 'g'] 。例如:

alpha

对于最后一个神秘"为什么图表上有三种以上的颜色" ,因为透明度x设置为0.5 (所有颜色都是50%透明)。一些数据点具有相同的yresponse.json()坐标,因此颜色重叠,看起来颜色比红色,绿色,蓝色更多。

要绘制正确的颜色,您需要使用标签信息。 Python scatter plot with colors corresponding to strings可以帮助你。