如何在散点图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 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    要获得此结果,您需要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()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看