基于列名的带有图例的 T-SNE 散点图
Posted
技术标签:
【中文标题】基于列名的带有图例的 T-SNE 散点图【英文标题】:T-SNE Scatter Plot with Legend Based on the Column Names 【发布时间】:2020-05-04 13:40:15 【问题描述】:我的 T-SNE 散点图打印得很好,但打印出来的颜色都是一样的,而且没有图例。我在这方面遇到了很大的麻烦。对于 SeaBorn,它将是“色调”,对于 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 或其他错误
【问题讨论】:
您实际尝试过什么,最近一次或多次尝试的全部错误是什么? @G.Anderson 我试过了:tsne_df['col']: ["A"]*len(a) + ["B"]*len(b) + ["C"]* len(c) hue ="col" ` 错误是:ValueError:无法解释输入'col' 我也尝试删除标签并将它们添加到单独的变量中,但我认为我没有正确 如果你想使用 seaborn,你需要将你的数据框从宽格式融合到长格式。如果你想使用 matplotlib,你可以遍历列for col in df.columns: plt.scatter(df.index.values, df[col].values, label=col)
。如果你想使用 pandas,你可以这样做 df.plot.scatter()
。
@ImportanceOfBeingErnest 我是在通过 tsne 之前还是之后融化数据框?
【参考方案1】:
我相信我解决了它。 确保在将 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)
这对我有用。
【讨论】:
以上是关于基于列名的带有图例的 T-SNE 散点图的主要内容,如果未能解决你的问题,请参考以下文章
100天精通Python(可视化篇)——第82天:matplotlib绘制不同种类炫酷散点图参数说明+代码实战(二维散点图三维散点图散点图矩阵)
R语言可视化:散点图散点图和折线图(line charts)3D散点图旋转3D散点图气泡图corrgram包可视化相关性矩阵马赛克图( Mosaic plots)hexbin密度图