Python散点图:软聚类

时间:2020-06-25 07:15:47

标签: python matplotlib cluster-analysis scatter-plot

我有2D数据,这些数据是使用带有软分类的EM算法进行聚类的。有3个不同的类,因此我有一个维数为n(clusters,n_datapoints)的概率向量。

现在,我想在散点图中绘制各个数据点,并为每个群集分配某种颜色。每个点的颜色是根据出现在每个聚类中的概率来确定的,因此是聚类颜色的混合。

到目前为止,我能实现的是带有红色,绿色和蓝色群集颜色的以下内容

Scatter plot

通过使用以下代码行:

for n in range(X.shape[0]):
    color = np.array([P[0,n],P[1,n],P[2,n]])[np.newaxis]
    plt.scatter(X[n,0],X[n,1],c=color)

如何为每个群集分配不同的特定颜色?例如。等级0为橙色,等级1为蓝色,等级2为洋红色。

2 个答案:

答案 0 :(得分:0)

您可以使用plotly这是一个很好的图表库,下面是一个示例,您可以在其中设置每个类别的大小和颜色。

#import plotly library 
import plotly.express as px
#get the iris datset 
df = px.data.iris()
#plot the scatter plot by setting size and colour 
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species",
                 size='petal_length', hover_data=['petal_width'])
fig.show()

答案 1 :(得分:0)

我将创建一个字典,其中每个群集都有其自己的颜色。然后,我将所有聚类颜色乘以它们的概率:

colors = []
cluster_colors = {0:np.array([255,0,0]),1:np.array([0,255,0]),2:np.array([0,0,255])}
for n in range(X.shape[0]):
    color = np.zeros([3])
    for c in range(P.shape[0]):
        color += cluster_colors[c]*P[c,n]

    colors.append(color)

当我正确理解您的数据后,这应该可以正常工作。