首页 > 解决方案 > 我正在尝试绘制具有独特颜色但出现错误的集群

问题描述

我只是想绘制 x, y 然后用集群着色它们。每个集群都应该有唯一的颜色。但我收到错误。我尝试不使用 numpy 数组,但仍然出现错误。

" 形状为 (5113,) 的 c 不能作为大小为 5113 的 x、大小为 5113 的 y 的颜色序列""

x = np.array(df['ip_indexed'])
print(x.shape)
y = np.array(df['geohash_indexed'])
print(y.shape)
labels = np.array(df['clusters'])
print(labels.shape)

''' output. 
(5113,)
(5113,)
(5113,)
 '''

LABEL_COLOR_MAP = {9066 : 'r',
               9068: 'silver',
               17182 : 'k',
               17183: 'c',
               17184: 'indigo',
               17185:  'tan',
               17186: 'plum',
               17187: 'yello',
               17188:'olive',
               17189:'deeppink'
               }

label_color = np.array([LABEL_COLOR_MAP[l] for l in labels])
label_color.shape

plt.figure(figsize=(50, 10))
plt.xlabel("ip_address", fontsize= 20)
plt.ylabel("geohash", fontsize= 20)
plt.title("clusters", fontsize= 50)
colors = np.random.rand(5113)
plt.scatter(x, y , c = label_color)

ValueError: c of shape (5113,) not acceptable as a color sequence for x with size 5113, y with size 5113

标签: pythonmatplotlibscatter-plot

解决方案


不久前我遇到了同样的问题,并在寻找解决方案时偶然发现了这篇文章。我可以明确地说:在行中,、 和plt.scatter(x, y , c = label_color)的形状必须相同,而且我相信,如果它们是 pandas 数据框,这三个都是最好的。我所有成功对象的形状都不是你的。我认识到您正在测试您的陈述中的形状,但似乎有些不对劲。xyc(5113, 1)(5113,)print()

我绝不是专业人士,在某些方面我可能是错的,但这就是我找到自己解决方案的方式。希望它可以将您和其他人推向正确的方向。


推荐阅读