【问题标题】:Associate color with number in matplotlib scatterplot将颜色与 matplotlib 散点图中的数字相关联
【发布时间】:2020-05-29 20:11:38
【问题描述】:

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

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

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

c=y 在散点图中是它使用 y 的值(即,观察的预测段)来选择颜色的地方。有4段。我只是不知道这 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)

【问题讨论】:

  • 你试过 ax.legend() 吗?
  • No handles with labels found to put in legend. 我想这同时也给了我一些谷歌的东西

标签: python matplotlib scikit-learn


【解决方案1】:

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

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()

【讨论】:

  • 呃,这正是我所需要的。我只是在做 ax.scatter (没有保留它,就像您使用 cm= 一样。我想我需要回去修复我的基础知识。谢谢!
  • @Chris,当 colormesh、contourf 等自动拾取颜色条而不需要您传递显式句柄时并不明显,cm 这里
猜你喜欢
  • 1970-01-01
  • 2015-08-08
  • 2014-09-10
  • 2011-08-29
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 2011-02-24
相关资源
最近更新 更多