Python matplotlib散点图np.choose值错误

Python matplotlib散点图np.choose值错误,python,numpy,matplotlib,plot,Python,Numpy,Matplotlib,Plot,我正在做kmeans并试图绘制多个集群 我有以下代码,其中X是我的数据点数组: centroids, ks = kmeans2(X,3) colors = ['r', 'g', 'b'] plt.scatter(X[:,0],X[:,1], c=np.choose(ks, colors)) plt.show() 当尝试用3个簇进行绘图时,一切正常 在尝试绘制compute 4群集时,我收到一个错误消息: plt.scatter(X[:,0],X[:,1], c=np.choose(ks,

我正在做kmeans并试图绘制多个集群

我有以下代码,其中X是我的数据点数组:

centroids, ks = kmeans2(X,3) 
colors = ['r', 'g', 'b']
plt.scatter(X[:,0],X[:,1], c=np.choose(ks, colors))
plt.show() 
当尝试用3个簇进行绘图时,一切正常

在尝试绘制compute 4群集时,我收到一个错误消息:

plt.scatter(X[:,0],X[:,1], c=np.choose(ks, colors))
  File "/usr/lib/python2.7/dist-packages/numpy/core/fromnumeric.py", line 297, in choose
    return choose(choices, out=out, mode=mode)
ValueError: invalid entry in choice array

对于
n
组,您需要至少有
n
颜色。当您有大量的组并且希望不同的组具有不同的颜色时,我建议使用
成对的
颜色映射:

In [223]:
#An example of generation 10 different colors.
import matplotlib.cm as cmap
cmap.Paired(np.linspace(0,1,10)) #returns rgba values for 10 different colors.
Out[223]:
array([[ 0.65098041,  0.80784315,  0.89019608,  1.        ],
       [ 0.24138409,  0.55454056,  0.67164939,  1.        ],
       [ 0.49101116,  0.77181086,  0.38794312,  1.        ],
       [ 0.72287582,  0.61176473,  0.45751636,  1.        ],
       [ 0.90200693,  0.16495195,  0.17131873,  1.        ],
       [ 0.9931411 ,  0.71752404,  0.38066898,  1.        ],
       [ 0.93071896,  0.56470589,  0.27973857,  1.        ],
       [ 0.57217994,  0.42994234,  0.70173012,  1.        ],
       [ 0.8785544 ,  0.8418762 ,  0.60081509,  1.        ],
       [ 0.69411767,  0.34901962,  0.15686275,  1.        ]])

有4组,你不需要4种颜色吗?像
颜色=['r','g','b','k']
?很好的评论!你知道我怎么能有很多颜色吗?假设我想拥有50个集群?要想获得评论,请参阅以下答案。听起来不错!非常感谢。然而,有一个问题,我在plt.scatter(X[:,0],X[:,1],c=np.choose(ks,colors)),在choose方法ValueError:shape mismatch:objects不能广播到单个shape我记得
ks
应该是
int
的1D
数组,在这种情况下,替换
c=np.choose(ks,colors)
使用
颜色[ks]
应该可以修复它。