作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 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/
我是一名优秀的程序员,十分优秀!