如何散布图,每个维度都有自己的颜色

数据挖掘 Python 可视化 matplotlib
2022-03-03 02:24:07

我想深入了解一些价值观。我有两个 300 维的向量,想逐个坐标比较它们。所以我想用不同的颜色绘制每个点,但是一个维度的颜色是相同的,这样我就知道哪些坐标在哪里。

我有下面的代码,我在 stackoverflow 上模拟了一些结果。

colors = itertools.cycle(["r", "g", "b"])

for d_in in inp_samples:
    clr = next(colors)
    plt.scatter(len(inp_samples), d_in, c=clr)

colors = itertools.cycle(["r", "g", "b"])

for d_out in out_samples:
    clr = next(colors)
    plt.scatter(len(out_samples), d_out, c=clr) 

但是我得到的情节很奇怪。我原以为它会分散,但它是这样的:

两个向量的图

我也试过这个:

colors = cm.jet(np.linspace(0, 1, 300))

for d_in, d_out, c in zip(inp_samples, out_samples, colors):
    plt.scatter(len(inp_samples), d_in, c=c)
    plt.scatter(len(out_samples), d_out, c=c)

在此处输入图像描述

谁能帮助理解我做错了什么?

1个回答

scatterin 中Matplotlib,前两个参数必须是要组合的值。在您的代码中,第一个值 ( ) 是(或),即数字 300,因此您的所有点都在垂直线上。xyxlen(inp_samples)len(out_samples)x=300

为了将 与 结合起来inp_samplesout_samples我也建议使用zip,就像您的第二个代码示例一样。只需更换

plt.scatter(len(inp_samples), d_in, c=c)
plt.scatter(len(out_samples), d_out, c=c)

plt.scatter(d_in, d_out, c=c)

(看看它是否有效)。

编辑

所以我想用不同的颜色绘制每个点,但是一个维度的颜色是相同的,这样我就会知道哪些维度点在哪里。

在散点图中,不需要任何特殊的着色——通过两个值形成一对,已经给出了哪个点属于哪个点。(xi,yi)

您也可以尝试在同一个图中绘制在这种情况下,彼此上方的点属于一起,您仍然不需要任何特殊的着色。(i,xi)(i,yi)

colors = itertools.cycle(["r", "g", "b"])
for i in range(300):
    clr = next(colors)
    plt.scatter(i, d_in[i], c=clr)
    plt.scatter(i, d_out[i], c=clr)