如何在PyQt5的pyqtgraph绘图组件中展示带聚类颜色的K-Means散点图?
没问题,我来帮你实现K-Means聚类结果的颜色区分展示!你的现有代码把所有数据点都用同一种样式绘制了,所以看不到聚类差异。我们只需要按聚类标签分组数据,然后给每个聚类分配不同的颜色即可。
下面是修改后的完整代码,我会一步步解释:
from sklearn.cluster import KMeans import pyqtgraph as pg clusters = 3 kmeans = KMeans(n_clusters=clusters, init='k-means++') kmeans.fit(Data4) y_means = kmeans.predict(Data4) # 为每个聚类定义不同的颜色,这里用了红、绿、蓝,你也可以换成其他颜色比如'#FFA500'(橙色) cluster_colors = [pg.mkColor('red'), pg.mkColor('green'), pg.mkColor('blue')] # 循环遍历每个聚类标签,分别绘制对应的数据点 for label in range(clusters): # 筛选出当前聚类的所有数据点 # 注意:这里假设Data4是(样本数, 特征数)的二维数组,如果你的Data4是(特征数, 样本数),请看下面的注释调整 cluster_samples = Data4[y_means == label] # 提取该聚类的两个特征作为x和y轴数据 x_data = cluster_samples[:, 0] y_data = cluster_samples[:, 1] # 如果你的Data4是(特征数, 样本数)的结构(比如原来的代码用Data4[0]取所有x点),替换上面两行为: # x_data = Data4[0][y_means == label] # y_data = Data4[1][y_means == label] # 绘制当前聚类的散点,指定填充颜色 self.graphWidget1.plot(x_data, y_data, pen=None, symbol='o', symbolBrush=cluster_colors[label])
关键说明:
symbolBrush参数用来设置散点的填充颜色,给每个聚类分配不同颜色后,就能直观区分不同聚类了- 如果需要给散点加上清晰的边框,可以额外添加
symbolPen=pg.mkColor('black')参数 - 颜色可以自由调整,pyqtgraph支持多种格式:颜色名称('red')、RGB元组
(255,0,0)或者十六进制字符串'#FF0000'都可以
这样修改后,你的散点图就会按K-Means的聚类结果显示不同颜色啦!
内容的提问来源于stack exchange,提问作者sumitpal0593
相关产品推荐
相关产品推荐

