如何在散点图pylab中的不同点使用不同的标记
发布于 2021-01-29 17:25:25
我想使用pylab的散点图功能
x = [1,2,3,4,5]
y = [2,1,3,6,7]
在这5个点中有两个聚类,索引1-2(聚类1)和索引2-4(聚类2)。聚类1中的点应使用标记“ ^”,而聚类2中的点应使用标记“ s”。所以
cluster = ['^','^','^','s','s']
我试过了
fig, ax = pl.subplots()
ax.scatter(x,y,marker=cluster)
pl.show()
这是一个玩具示例,真实数据有10000多个样本
关注者
0
被浏览
43
1 个回答
-
要获得此结果,您需要
scatter
在同一轴上多次调用。好消息是您可以针对给定的数据自动执行此操作:import matplotlib.pyplot as plt x = [1,2,3,4,5] y = [2,1,3,6,7] cluster = ['^','^','^','s','s'] fig, ax = plt.subplots() for xp, yp, m in zip(x, y, cluster): ax.scatter([xp],[yp], marker=m) plt.show()
较整洁的解决方案是使用群集信息过滤输入数据。我们可以使用来做到这一点
numpy
。import matplotlib.pyplot as plt import numpy as np x = np.array([1,2,3,4,5]) y = np.array([2,1,3,6,7]) cluster = np.array([1,1,1,2,2]) fig, ax = plt.subplots() ax.scatter(x[cluster==1],y[cluster==1], marker='^') ax.scatter(x[cluster==2],y[cluster==2], marker='s') plt.show()