2016-10-25 356 views
0

我试图在二维空间中绘制点,插入标签和每个点的颜色设置在哪里(不依赖于标签)。 第一次尝试,不考虑标签是:pylab:用颜色绘制点

import pylab 
x = [-0.01611772, 1.51755901, -0.64869352, -1.80850313, -0.11505037] 
y = [ 0.04845168, -0.45576903, 0.62703651, -0.24415787, -0.41307092] 
colors = ['b', 'g', 'r', 'b', 'r'] 

for k in range(len(x)): 
    pylab.scatter(x[k],y[k],colors[k]) 

它返回一个没有必要的操作适合于执行情节的错误:具有思想

Traceback (most recent call last): 
    File "<pyshell#1>", line 12, in <module> 
    pylab.scatter(x[k],y[k],colors[k]) 
    File "C:\Program Files\Anaconda\lib\site-packages\matplotlib\pyplot.py", line 3258, in scatter 
    edgecolors=edgecolors, data=data, **kwargs) 
    File "C:\Program Files\Anaconda\lib\site-packages\matplotlib\__init__.py", line 1818, in inner 
    return func(ax, *args, **kwargs) 
    File "C:\Program Files\Anaconda\lib\site-packages\matplotlib\axes\_axes.py", line 3866, in scatter 
    alpha=alpha 
    File "C:\Program Files\Anaconda\lib\site-packages\matplotlib\collections.py", line 833, in __init__ 
    self.set_sizes(sizes) 
    File "C:\Program Files\Anaconda\lib\site-packages\matplotlib\collections.py", line 806, in set_sizes 
    scale = np.sqrt(self._sizes) * dpi/72.0 * self._factor 
TypeError: ufunc 'sqrt' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' 

有人吗?

回答

2

这里没有必要使用for循环。只需通过您的颜色列表到pylab.scatter功能:

import pylab 

x = [-0.01611772, 1.51755901, -0.64869352, -1.80850313, -0.11505037] 
y = [ 0.04845168, -0.45576903, 0.62703651, -0.24415787, -0.41307092] 

colors = ['b', 'g', 'r', 'b', 'r'] 

pylab.scatter(x, y, c=colors) 

pylab.show() 

这将产生以下图表:

enter image description here

+0

我不知道为什么在它不工作....解决!谢谢! –

0

变化

pylab.scatter(x[k],y[k],colors[k]) 

pylab.scatter(x = x[k],y = y[k],c = colors[k]) 
+0

这对已经接受的答案没有任何改进。 – yacc

+0

好的。我只想指出,使用for循环很好,以防当前答案中不明显。 – hakunamatata