Python 在散点图中为每个类绘制不同的聚类标记

Python 在散点图中为每个类绘制不同的聚类标记,python,matplotlib,cluster-analysis,scatter-plot,Python,Matplotlib,Cluster Analysis,Scatter Plot,我有一个散点图,其中我绘制了14个簇,但每2个簇属于同一类,它们都使用相同的标记。每50行是一个集群,每100行是同一类的两个集群。我要做的是每2个簇或100行更改标记 这是我从一个包含大量数据的大型代码中得到的最小可重复性示例 这是实际的绘图: 这就是我想要达到的目标。 我得到的错误是: ValueError: Unrecognized marker style ['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x

我有一个散点图,其中我绘制了14个簇,但每2个簇属于同一类,它们都使用相同的标记。每50行是一个集群,每100行是同一类的两个集群。我要做的是每2个簇或100行更改标记

这是我从一个包含大量数据的大型代码中得到的最小可重复性示例

这是实际的绘图:

这就是我想要达到的目标。

我得到的错误是:

ValueError: Unrecognized marker style ['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'...]'
请试试这个:

import numpy as np
from matplotlib import pyplot as plt

X_lda=np.array([[1,2],[1,1],[3,3],[4,4],[2,4],[3,5],[3,4],[3,2]]) # suppose you want to plot X

y=[0,1,1,1,2,3,4,4] # the cluster of each sample in X_lda 

color=['b','r'] 
markers = ['x', 'o', '1', '.', '2', '>', 'D'] # marker
X_lda_colors=  [ color[i] for i in list(np.array(y)%2) ] 
X_lda_markers= [ markers[i] for i in list(np.array(y)%2) ] 
plt.xlabel('1-eigenvector')
plt.ylabel('2-eigenvector')

for i in range(X_lda.shape[0]):
    plt.scatter( X_lda[i,0],    X_lda[i,1],    c=X_lda_colors[i],
    marker=X_lda_markers[i],    cmap='rainbow',   alpha=0.7,     edgecolors='w')
plt.show()

在标记=['x'、'o'、'1'、'、'2'>'、'D']中缺少逗号,介于'2'和'>'之间。我修复了逗号,谢谢提醒。在我将x_lda_标记=[markers[I]for I in list(np.array(y)%2)]更改为%7之后,它工作得非常好。谢谢!
import numpy as np
from matplotlib import pyplot as plt

X_lda=np.array([[1,2],[1,1],[3,3],[4,4],[2,4],[3,5],[3,4],[3,2]]) # suppose you want to plot X

y=[0,1,1,1,2,3,4,4] # the cluster of each sample in X_lda 

color=['b','r'] 
markers = ['x', 'o', '1', '.', '2', '>', 'D'] # marker
X_lda_colors=  [ color[i] for i in list(np.array(y)%2) ] 
X_lda_markers= [ markers[i] for i in list(np.array(y)%2) ] 
plt.xlabel('1-eigenvector')
plt.ylabel('2-eigenvector')

for i in range(X_lda.shape[0]):
    plt.scatter( X_lda[i,0],    X_lda[i,1],    c=X_lda_colors[i],
    marker=X_lda_markers[i],    cmap='rainbow',   alpha=0.7,     edgecolors='w')
plt.show()