想给每个盆栽涂上不同的颜色

Want to Color Each Potted Cluster a Different Color

我正在尝试为从 DBscan 绘制的每个簇着色不同的颜色。我创建了一个颜色列表并尝试让代码遍历每个集群并将其绘制为不同的颜色,但它为所有集群着色相同的颜色,这是颜色列表中的最后一种颜色(紫色)。帮助将不胜感激。

import pandas as pd
from sklearn.cluster import DBSCAN
from collections import Counter
from sklearn.neighbors import NearestNeighbors
from matplotlib import pyplot as plt
import matplotlib
matplotlib.use('TkAgg')

eps = 4.3


model  = DBSCAN(eps            = eps,
                min_samples    = 210,
                metric         = 'euclidean'
                )

data = model.fit(plotting_data)


X          = plotting_data['X']
Y          = plotting_data['Y']

clusters = data.fit_predict(plotting_data)
print(clusters)

clust_df = pd.DataFrame(plotting_data)


clusters = (clust_df[data.labels_ != -1])



labels = data.labels_
num_clusters = len(set(labels))
print(num_clusters)



color_list = ['green', 'blue', 'red', 'yellow',  'orange',  'magenta', 'cyan', 'purple']
labels = data.labels_
num_clusters = len(set(labels))


i = 0
for col in zip(color_list):
    plt.scatter(clusters['X'],
                clusters['Y'],
                c = col

                )
    i += 1


plt.title("Clusters: " + str(num_clusters), fontsize = 13)

plt.show()

[![在此处输入图片描述][1]][1]

我认为这可行:

color_list = np.array(['green', 'blue', 'red', 'yellow',  'orange',  'magenta', 'cyan', 'purple'])

plt.scatter(clusters['X'], clusters['Y'], c = color_list[labels])
plt.show()

我能够解决它,所以我正在回答,以防将来有人需要可能的答案。 我需要做的就是获取我的 DBscan 数据并使用 fit_predict 和 (x,y) 绘图点('clusters',在我的例子中)。

像这样:

color_clusters = data.fit_predict(clusters)

# i = 0
# for col in zip(color_list):

plt.scatter(clusters['X'],
           clusters['Y'],
           c = color_clusters,
           cmap = 'inferno'

           )
plt.colorbar()