【问题标题】:No handles with labels found to put in legend. plt.legend()没有发现带有标签的手柄放在图例中。 plt.legend()
【发布时间】:2021-10-24 13:47:28
【问题描述】:

我刚学了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 ()

【问题讨论】:

    标签: python dataframe matplotlib k-means


    【解决方案1】:

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

    ...
    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-08
      • 2019-05-23
      • 2020-03-20
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      相关资源
      最近更新 更多