我正在尝试使用matplotlib / seaborn绘制散点图:
plt.figure(figsize=(16,10))
sns.scatterplot(
x=[i[0] for i in tsne_data],
y=[i[1] for i in tsne_data],
alpha=0.3,
color=label_colors
)
我遇到错误:
ValueError: 'c' argument has 267794 elements, which is not acceptable for use with 'x' with size 0, 'y' with size 0.
我的数据:
label_colors
—具有267,794个元素的Python列表。每个元素都是一个字符串,例如'红色','蓝色','紫色'。tsne_data
—具有267,794个元素的Numpy 2D数组。每个元素都是x,y坐标,例如[ 9.417695 , -25.48891 ]
。形状为(267794,2)。 我不明白为什么会收到此错误,特别是为什么'x'和'y'未被识别为具有任何长度。我曾尝试使用pandas数据框进行此操作,但在其中有一个“ x”和“ y”列,然后设置x=df['x']
或x=list(df['x'])
,但遇到相同的错误。如何绘制tsne_data
以便其[267]点中的每一个都由label_colors
中相应索引处指定的颜色着色?
根据seaborn documentation,您应该使用参数hue
:
plt.figure(figsize=(16,10))
sns.scatterplot(
x=[i[0] for i in tsne_data],
y=[i[1] for i in tsne_data],
alpha=0.3,
hue=label_colors
)