You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现KMeans聚类绘图调用plt.legend()报错如何解决

报错原因

No handles with labels found to put in legend 报错的核心原因是plt.legend()需要基于绘图元素的label属性生成图例,但你现有代码中所有plt.scatter()绘图语句都没有设置label参数,matplotlib找不到可用于生成图例的内容,因此抛出错误。你之前查到的ax.legend()是面向对象的绘图写法,不需要用也能解决当前问题。

修复方法

给每个散点图的plt.scatter()添加对应label参数即可,另外你注释的质心绘制代码存在笔误,km_clusters_centers_需要修改为km.cluster_centers_,可以选择取消注释展示聚类中心。

修正后的完整代码如下:

import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_excel("Umur.xlsx")
df.head()
print(df)
a = plt.scatter(df['Umur'],df['Gaji'])
plt.show()
km = KMeans(n_clusters=3)
y_predicted = km.fit_predict(df[['Umur','Gaji']])
print(y_predicted)
df['cluster'] = y_predicted
print(df)

df1 = df[df.cluster==0]
df2 = df[df.cluster==1]
df3 = df[df.cluster==2]

# 给每个散点图加label参数
plt.scatter(df1.Umur,df1['Gaji'],color='green', label='聚类簇1')
plt.scatter(df2.Umur,df2['Gaji'],color='red', label='聚类簇2')
plt.scatter(df3.Umur,df3['Gaji'],color='black', label='聚类簇3')

# 修复笔误后可取消注释展示质心
plt.scatter(km.cluster_centers_[:,0],km.cluster_centers_[:,1],color='purple',marker='*',label='聚类质心')
plt.xlabel('Umur')
plt.ylabel('Gaji')
plt.legend()
plt.show()

内容的提问来源于stack exchange,提问作者Wonderweis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:51:03