无法使颜色在Matplotlib pcolormesh和for循环中的标记图之间同步

时间:2019-03-10 01:32:43

标签: python matplotlib scikit-learn

我正在尝试使用scikit-learn和matplotlib在群集之间绘制一些近似边界(基于到0.25增量的最近群集质心的欧式距离)。

我无法获得pcolormesh的颜色与for循环中绘制的点的颜色匹配。

在for循环的情况下,根据簇的索引号为其分配颜色。例如。 km.labels [0]获取我的cmap中的第一个颜色,km.labels 1获取第二个颜色,依此类推。...

虽然我怀疑pcolormesh图的颜色是根据该簇索引号首次出现在数组中的时间分配的。例如。 clus_lab_mesh [0,0](此2d数组中第一行,列的值)恰好属于我的第三个群集(即km.labels [2])。

我已经尝试过各种方法,例如规范化而无法解决问题。我也不能只是对2d网格数组进行升序排序,因为这会使我的x和y值混乱。

我不包括完整的代码,因为它很长,并且位于较大的for循环中,以针对k的不同值运行k表示。我希望下面的内容足以解释问题。 谢谢!

x_mesh, y_mesh = np.meshgrid(x,y)
clus_lab_mesh = clus_lab0.reshape(x_mesh.shape) 

cmap = cm.get_cmap('tab10')        
colors = [cmap(0), cmap(1), cmap(2), cmap(3), cmap(4), cmap(5), cmap(6), cmap(7), cmap(8),cmap(9)]
plt.figure()
for j in range( M ):
     plt.plot( X[j:,2], X[j:,5], marker="o", markeredgecolor='w', linestyle="", markerfacecolor=colors[km.labels_[j]], markersize=7)

plt.pcolormesh(x_mesh, y_mesh, clus_lab_mesh, shading="flat", cmap="tab10", vmin=0, vmax=cmap.N
plt.show()

enter image description here

0 个答案:

没有答案