未找到带标签的句柄以放入图例中。 plt.legend()

No handles with labels found to put in legend. plt.legend()

我刚学会 python,这实际上是我的第一课,我被告知要用 python 制作 kmeans。当我在做的时候,当我使用 plt.legend() 时它给了我一个错误,我在 sov 中读到我们应该使用 ax.legend,但显然要么它不起作用,要么我写错了。所以我想我会在将其更改为斧头之前先给出代码。我的英语不是很好所以请耐心等待。谢谢

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)
km
y_predicted = km.fit_predict(df[['Umur','Gaji']])
y_predicted
print(y_predicted)
df['cluster'] = y_predicted
df.head()
print(df)

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

plt.scatter(df1.Umur,df1['Gaji'],color='green')
plt.scatter(df2.Umur,df2['Gaji'],color='red')
plt.scatter(df3.Umur,df3['Gaji'],color='black')

#plt.scatter(km.cluster_centers_[:,0],km_clusters_centers_[:,1],color='purple',marker='*',label='centroid')
plt.xlabel('Umur')
plt.ylabel('Gaji')
plt.legend ()

我编辑三行并添加一行,如下所示:

...
gaji_green  = plt.scatter(df1.Umur,df1['Gaji'],color='green')
gaji_red    = plt.scatter(df2.Umur,df2['Gaji'],color='red')
gaji_balck  = plt.scatter(df3.Umur,df3['Gaji'],color='black')
...
plt.legend((gaji_green, gaji_red, gaji_balck),
           ('gaji_green', 'gaji_red', 'gaji_balck'),
           scatterpoints=1,
           loc='lower left',
           ncol=1,
           fontsize=8)
...

最后,代码如下:

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")


km = KMeans(n_clusters=3)
y_predicted = km.fit_predict(df[['Umur','Gaji']])

df['cluster'] = y_predicted

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

gaji_green  = plt.scatter(df1.Umur,df1['Gaji'],color='green')
gaji_red    = plt.scatter(df2.Umur,df2['Gaji'],color='red')
gaji_balck  = plt.scatter(df3.Umur,df3['Gaji'],color='black')

plt.xlabel('Umur')
plt.ylabel('Gaji')
plt.legend ()

plt.legend((gaji_green, gaji_red, gaji_balck),
           ('gaji_green', 'gaji_red', 'gaji_balck'),
           scatterpoints=1,
           loc='lower left',
           ncol=1,
           fontsize=8)

plt.show()