在Python中根据类别标签绘制数据点

0 投票
1 回答
5749 浏览
提问于 2025-04-18 13:43

我想要绘制一些数据点,这些数据点的颜色要和它们的类别标签对应起来。我对数据可视化更熟悉的是R语言。在R中,我会这样做:

x = matrix(runif(100), 2, 20)
y = matrix(runif(100), 2, 20)
labels = c(rep(0, 20), rep(1, 20))
plot(rbind(x, y), col = labels)

这样我就能得到一个散点图,显示两个类别的数据点,而且它们的颜色就是对应的标签。我不太确定在Python中该怎么做。目前我做的是:

import numpy
plot(numpy.vstack((x,y)), c = labels) 

但显然Python不喜欢用整数值来表示颜色……非常感谢你的帮助!

1 个回答

1

你走在正确的道路上。你有三组数据:xyc,其中c是一个包含类别标签的整数数组。

你可以做的最简单的事情是:

import matplotlib.pyplot as plt
import numpy as np

# create some random data grouped into three groups
x = np.random.random(100)
y = np.random.random(100)
c = np.random.choice(range(3), 100)

# plot the data
fig = plt.figure()
ax = fig.add_subplot(111)
# plot x,y data with c as the color vector, set the line width of the markers to 0
ax.scatter(x, y, c=c, lw=0)

这样做会得到:

enter image description here

如果你想对颜色有更多的控制,可以自己创建一个颜色表,比如:

mycolors = np.array([ 'g', 'm', 'c' ])
ax.scatter(x, y, c=mycolors[c], lw=0)

现在颜色就变成了:0=绿色,1=洋红色,2=青色:

enter image description here

当然,你也可以用颜色三元组(RGB)或四元组(RGBA)来代替颜色名称。这样你可以更细致地控制颜色。

你还可以使用内置的颜色映射,或者自己创建一个。我觉得上面的解决方案对于只有少量可能值的离散数据来说是最清晰的。

撰写回答