gpt4 book ai didi

python - 使图例对应于matplotlib中散点的颜色

转载 作者:太空狗 更新时间:2023-10-29 18:28:59 25 4
gpt4 key购买 nike

我在 scikit-learn 中通过 KMeans 算法生成了一个图。簇对应不同的颜色。这是情节, enter image description here

我需要这个图的图例,它对应于图中的簇号。理想情况下,图例应显示簇的颜色,标签应为簇编号。谢谢。

编辑:我想我应该放一些代码,因为人们对此表示反对

from sklearn.cluster import KMeans
km = KMeans(n_clusters=20, init='random')
km.fit(df) #df is the dataframe which contains points as coordinates
labels = km.labels_
plt.clf()
fig = plt.figure()
ax = fig.add_subplot(111, axisbg='w', frame_on=True)
fig.set_size_inches(18.5, 10.5)

# Plot the clusters on the map
# m is a basemap object
m.scatter(
[geom.x for geom in map_points],
[geom.y for geom in map_points],
20, marker='o', lw=.25,
c = labels.astype(float),
alpha =0.9, antialiased=True,
zorder=3)
m.fillcontinents(color='#555555')
plt.show()

最佳答案

我能够使图例与颜色相对应。正如 Rutger Kassies 所提到的,关键是对数据中的每个类别使用多个散点图。

代码如下:

import numpy as np
import matplotlib.pyplot as plt

# Setting various plot properties
plt.clf()
fig = plt.figure()
ax = fig.add_subplot(111, axisbg='w', frame_on=True)
fig.set_size_inches(18.5, 10.5)

# Creating a discrete colorbar
colors = plt.cm.rainbow(np.linspace(0, 1, 20))

current_plot_range = 0
previous_plot_range = 0

for i,c in enumerate(colors):
previous_plot_range += current_plot_range
current_plot_range = labels[labels==i].size
m.scatter(
[geom.x for geom in map_points[
previous_plot_range:previous_plot_range+current_plot_range]],
[geom.y for geom in map_points[
previous_plot_range:previous_plot_range+current_plot_range]],
20, lw=.25, marker='o',color = c, label=i, alpha =0.9, antialiased=True,
zorder=3)

plt.legend()
m.fillcontinents(color='#555555')

结果看起来像这样: enter image description here

关于python - 使图例对应于matplotlib中散点的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19720412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com