首页 > 解决方案 > 将颜色与 matplotlib 散点图中的数字相关联

问题描述

我正在使用 sklearn 根据一些零售数据做一个 kmeans 集群。

我们在幕后使用这个集群来细分客户(例如,蓝色客户很棒,绿色客户有这样那样的需求,等等)。

显示的数据点是不同的颜色,具体取决于客户已放入 4 个集群中的哪一个。但是我找不到直接推断哪种颜色是哪个段号的方法(或者如何强制某些段号为某种颜色)。

c=y在散点图中,它使用 y 的值(即观察的预测段)来选择颜色。有4段。我只是不知道这四个中的哪一个被映射到哪种颜色!

有人可以建议我如何添加图例,或者自己强制颜色吗?

kmeans=kmeans.fit(X)
y=kmeans.predict(X)

fig = plt.figure()
ax = Axes3D(fig)
ax.view_init(30)
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y)
ax.set_xlabel(vx)
ax.set_ylabel(vy)
ax.set_zlabel(vz)

分散

标签: pythonmatplotlibscikit-learn

解决方案


您需要从散点图和绘图颜色条返回一个句柄,

cm = ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y)
plt.colorbar(cm)

作为一个最小的例子

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

X = np.random.randn(100,3)
y = np.random.randn(100)

fig = plt.figure()
ax = Axes3D(fig)
ax.view_init(30)
cm = ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y)
plt.colorbar(cm)
plt.show()

推荐阅读