seaborn散点图中的质心标注方法

it2025-02-01  12

散点图中的质心标注方法

前言质心标注参考

前言

t-SNE Python Example文章有一张散点图的动图,被各大博主拿来分享,我也贴一下,这个图确实比较震撼。

除了会动,还有一个震撼之处就是标注的数字会随着点的散开而动,很遗憾原来的文章不是绣这个操作的,没看到实现方法,但是由此推断这个标注应该在分类样本的质心(坐标均值)上,那么这种质心标注有没有用呢?答案是有用,非常有用,尤其当分类样本多、分类点分散以及某些分类聚集的时候,散点图有时不那么直观,比如下图超过50个类别的情况,虽然利用颜色、样式(也可以大小)来区分,但还是乱了套。

质心标注

这里还是用seaborn的强大功能,帮助实现质心标注,实例代码如下:

import seaborn as sns df = sns.load_dataset('iris') sns.set(rc={'figure.figsize': (11.7, 8.27)}) palette = sns.color_palette("husl", 3) p1 = sns.scatterplot(x="sepal_length", y="sepal_width", data=df, hue='species', style='species', legend='auto', palette=palette) p1.text(df.loc[df["species"]=='setosa']["sepal_length"].mean(), df.loc[df["species"]=='setosa']["sepal_width"].mean(), "setosa", horizontalalignment='left', size='medium', color='black', weight='semibold') p1.text(df.loc[df["species"]=='versicolor']["sepal_length"].mean(), df.loc[df["species"]=='versicolor']["sepal_width"].mean(), "versicolor", horizontalalignment='left', size='medium', color='black', weight='semibold') p1.text(df.loc[df["species"]=='virginica']["sepal_length"].mean(), df.loc[df["species"]=='virginica']["sepal_width"].mean(), "virginica", horizontalalignment='left', size='medium', color='black', weight='semibold')

效果如下: 质心标注了类别名称,查看类别分布是不是更加直观了,那么我们那个超过50个类的散点图有时什么样的呢? 这么看,是不是那些关系很近的类别一下子就无处躲藏了,质心标注在大数据多类别的散点分析中体现了自己的价值。

参考

seaborn学习笔记2-散点图Scatterplotdataframe 按条件筛选行python下的Pandas中DataFrame基本操作(一),基本函数整理seaborn系列 (2) | 散点图scatterplot()
最新回复(0)