Seaborn散点图 - 标记数据点

5
我有一个使用数据框中的数据的Seaborn散点图。我想向图表添加数据标签,使用与该观察(行)相关联的df中的其他值。请参见下文 - 是否有一种方法将至少一列值(A或B)添加到图表中?更好的是,是否有一种方法可以添加两个标签(在这种情况下,即列A和B中的值)?
我尝试使用像以下函数这样的for循环,根据我的搜索,但是在这个散点图上没有成功。
感谢您的帮助。
df_so = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
scatter_so=sns.lmplot(x='C', y='D', data=df_so,
           fit_reg=False,y_jitter=0, scatter_kws={'alpha':0.2})

fig, ax = plt.subplots() #stuff like this does not work 

我不这么认为,因为它严格地从一组三个聚类中添加。 - Z_D
2
你想解决由pandas dataframe和seaborn创建的带有重复标签散点图的问题,并且这些散点值来自数据框中的另一列。难道这不正是你想要的吗? - DavidG
这可能不是 OP 想要的,但这正是这个问题所要求的。除非它被编辑为询问实际问题(展示链接解决方案在多大程度上无法帮助),否则我会同意它是一个重复的问题。 - ImportanceOfBeingErnest
1个回答

5

使用:

df_so = pd.DataFrame(np.random.randint(0,100,size=(20, 4)), columns=list('ABCD'))
scatter_so=sns.lmplot(x='C', y='D', data=df_so,
           fit_reg=False,y_jitter=0, scatter_kws={'alpha':0.2})


def label_point(x, y, val, ax):
    a = pd.concat({'x': x, 'y': y, 'val': val}, axis=1)
    for i, point in a.iterrows():
        ax.text(point['x']+.02, point['y'], str(point['val']))
        
label_point(df_so['C'], df_so['D'], '('+df_so['A'].astype(str)+', '+df_so['B'].astype(str)+')', plt.gca())

输出:

在这里输入图片描述


(注:该内容为HTML代码,无需翻译)

4
谢谢。下投票的原因是什么? - Z_D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接