我的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)


那就是对我有用的。

09-12 22:32