ValueError:c参数具有n个元素,不适用于大小为0的x,大小为0的y

问题描述 投票:0回答:1

我正在尝试使用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中相应索引处指定的颜色着色?

python matplotlib seaborn valueerror
1个回答
0
投票

根据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
)
© www.soinside.com 2019 - 2024. All rights reserved.