python - 具有基于列名称的图例的 T-SNE 散点图

标签 python pandas matplotlib machine-learning seaborn

我的 T-SNE 散点图打印得很好,但打印出的颜色全部相同并且没有图例。我在这方面遇到了很大的麻烦。对于 SeaBorn 来说,它是“hue”,对于 Matplotlib 来说,它是定义“c”。总而言之,我确实需要帮助定义具有 A 、B、C (列名称)的图例并将其(A、B、C)链接到散点图上的颜色。

我的数据如下:

  A    B    C
 1.0  2.0  3.0
 4.0  5.0  6.0
 7.0  8.0  9.0

a = pd.DataFrame(data_files, columns = ['A'])
b = pd.DataFrame(data_files, columns = ['B'])
c = pd.DataFrame(data_files, columns = ['C'])

test_array = [a,b,c]
data_elem  = pd.concat(test_array, axis = 1, sort = False)

model     = TSNE(n_components = 2, perplexity = 50, learning_rate = 100, random_state  = None)
tsne_data = model.fit_transform(data_elem)
tsne_df   = pd.DataFrame(tsne_data)

htw = tsne_df.to_numpy(copy = True)
tsne_df['tsne_x'] = htw[:, 0]
tsne_df['tsne_y'] = htw[:, 1]

sns.scatterplot(
      x       = "tsne_x",
      y       = "tsne_y",
      #hue     = "",       <--issue is here
      palette = "Greens",
      data    = tsne_df,
      legend  = "full",
      alpha   = 0.3

   )

plt.xlabel("Dimension_X")
plt.ylabel("Dimension_Y")

plt.legend(loc = 'upper right')
plt.show()

我尝试过的方法都不起作用。如果您使用 matplotlib,我会通过尝试定义“hue”或“c”不断收到错误,即 KeyError 或其他错误

最佳答案

我相信我已经解决了。 确保在将 DataFrame 放入 T-SNE 之前将数据与标签分开。

data_elem_data                  = data_elem
data_elem_label                 = labels go here (must be 1 dimensional)

对我来说,在将 data_elem_label 与所有内容结合之前,我需要将其展平。

data_elem_label  = data_elem_label.values.flatten() 

T-SNE 创建两列 (x,y),因此添加第三列,这将是标签列。所以...将分离的标签列(从头开始)添加到完成的T-SNE中。

即:

tsne_df = pd.concat([tsne_df, pd.Series(data_elem_label)], axis = 1) 

这对我有用。

关于python - 具有基于列名称的图例的 T-SNE 散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59791217/

相关文章:

pandas 从列列表中分配结果

python - 如何绘制 Pandas 数据框的多列

python - 如何连接两个数据框并在这样的特定列上对齐?

python-3.x - python 条形图和折线图与 pandas 和 matplotlib 在同一图表中

python - Matplotlib 将 jpg 读入 int8 并将 png 读入规范化的 float

python - 如何从一维数组获取二维数组的索引?

python - 从我的本地环境调用 stripe charge API 时出现 TLS 问题

python - 从 GitLab CI 将应用程序部署到 App Engine 时权限被拒绝

python - Pandas如何打开里面有表情符号的csv

python - 如何在 matplotlib 中向水平条形图添加标签?