Python matplotlib散点图np.choose值错误
我正在做kmeans并试图绘制多个集群 我有以下代码,其中X是我的数据点数组: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,
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]
应该可以修复它。