df =
id_easy latitude longitude cluster
0 a1 45.1076 7.4920 0
0 b1 45.1064 7.5013 0
1 c1 44.9498 7.5010 1
1 d1 44.9656 7.5084 1
2 e1 45.0846 7.5277 2
2 f1 45.1650 7.7950 2
我想形象化:
id_easy
a1
的{{1}} b1
cluster
的经度和纬度值以不同的颜色显示,其余数据为灰色0
id_easy
的{{1}} c1
d1
的经度和纬度值以不同的颜色显示,其余数据为灰色cluster
1
的{{1}} id_easy
e1
的经度和纬度值以不同的颜色显示,其余数据为灰色我有这个:
f1
但是它为我提供了cluster
的所有栗色颜色,但我希望它们使用不同的颜色
所需的输出:
对于id_easy的每个值,我都有不同的颜色
答案 0 :(得分:2)
这可以通过seaborn完成:
for cluster in df.cluster.unique():
# mask the cluster of interest
is_cluster = df.cluster.eq(cluster)
# plot the other clusters in gray
ax = df[~is_cluster].plot.scatter(x='latitude',y='longitude', c='gray')
# plot the cluster of interest in different colors
sns.scatterplot(data=df[is_cluster],
x='latitude',
y='longitude',
hue='id_easy',
ax=ax)
# you can do other stuff with ax here
# ax.set_title(...)...
plt.show()
最后,您将获得3个地块:
答案 1 :(得分:1)
您的问题对我来说还不是很清楚,这是您要寻找的吗?
如果这是我使用的代码:
df2=df.set_index('cluster')
fig, axs = plt.subplots(figsize=(10, 12), nrows=3,ncols=1,constrained_layout=True)
for clus in df2.index.unique():
axs[clus].plot(df2.latitude,df2.longitude,'o',color='grey',markersize=12)
axs[clus].plot(df2.loc[clus].latitude.iloc[0],df2.loc[clus].longitude.iloc[0],'o',markersize=12)
axs[clus].plot(df2.loc[clus].latitude.iloc[1],df2.loc[clus].longitude.iloc[1],'o',markersize=12)
axs[clus].set_xlabel('Latitude')
axs[clus].set_ylabel('Longitude')
axs[clus].set_title('Cluster '+str(clus))