Pandas 在底图上添加多个(群集)标签

Pandas 在底图上添加多个(群集)标签,pandas,label,cluster-analysis,k-means,matplotlib-basemap,Pandas,Label,Cluster Analysis,K Means,Matplotlib Basemap,下面是我在英国为我的数据集(分为2个集群)应用KMeans集群算法的代码。在clusters=m.scatter(etc,…)行中,我希望能够标记这两个集群。同样,在cog=m.scatter(etc,…)行上,我希望有相应的标签“cog Cluster 1”和“cog Cluster 2” 我尝试过某种循环,但它似乎仍然只绘制了标签中的第一个 我不太清楚您想要实现什么(在标记形状和颜色方面),但也许您可以生成自己的传奇。请看最后一个示例,了解如何执行此操作。应该有一种方法可以在簇线和中心距线

下面是我在英国为我的数据集(分为2个集群)应用KMeans集群算法的代码。在
clusters=m.scatter(etc,…)
行中,我希望能够标记这两个集群。同样,在
cog=m.scatter(etc,…)
行上,我希望有相应的标签“cog Cluster 1”和“cog Cluster 2”

我尝试过某种循环,但它似乎仍然只绘制了标签中的第一个


我不太清楚您想要实现什么(在标记形状和颜色方面),但也许您可以生成自己的传奇。请看最后一个示例,了解如何执行此操作。应该有一种方法可以在簇线和中心距线中的标签上循环,这样我就不需要创建自己的图例了?但您只创建了两个标签(两次调用
散点
)。如果要直接绘制所有标签,则必须单独绘制簇。同样,如果你不想这样做,你必须“手工”添加标签。
import pandas as pd
from sklearn.cluster import KMeans
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10, 10))
m = Basemap(projection='lcc', resolution='h', 
        lat_0=54.7, lon_0=-3.36,
        width=0.7E6, height=1.2E6)

m.drawmapboundary(fill_color='white')
m.drawcoastlines()
m.drawcountries()

#load locations
X = pd.read_csv("123.csv")

lat = X['Latitude'].values
lon = X['Longitude'].values

#apply the KMeans Clustering Algorithm and plot clusters
km = KMeans(n_clusters=2, random_state=0, algorithm ='full')
km.fit(X)

# review the cluster labels, save them, and sort by cluster
X['cluster'] = km.labels_

# save the DataFrame of cluster centers
centers = X.groupby('cluster').mean()

# create a "colors" array for plotting
import numpy as np
cluster_colors = np.array(['green','blue'])
centroid_colors = np.array(['black','orange'])

# scatter plot colored by cluster (1=green, 2=blue)
clusters = m.scatter(lon, lat, latlon=True, c=cluster_colors[X.cluster], s=80, alpha=0.8,label="Cluster 2")

#plot centre of gravity for each cluster (unweighted)
cog = m.scatter(centers['Longitude'].values, centers['Latitude'].values, latlon=True, marker='s', alpha=0.8, s=200, c=centroid_colors[X.cluster],label="CoG Cluster 1")

plt.legend(frameon=True,facecolor='white',handles=[cog,clusters])

plt.show()