【问题标题】:Seaborn scatterplot - label data points [duplicate]Seaborn 散点图 - 标签数据点 [重复]
【发布时间】:2018-11-09 08:42:53
【问题描述】:

我有一个使用数据框中的数据的 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 

【问题讨论】:

  • 我不这么认为,因为它严格要求从一组 3 个集群中添加
  • 从 pandas 数据框和 seaborn 创建的重复标签分散点的答案与数据框中另一列的值。这不正是你想要的吗?
  • 这可能不是 OP 想要的,但这正是这个问题所要求的。除非它被编辑以询问实际问题(显示链接解决方案在多大程度上没有帮助),否则我同意它是重复的。

标签: python plot seaborn


【解决方案1】:

用途:

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())  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})


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())  

输出:

【讨论】:

  • 谢谢。投反对票的原因是什么?
猜你喜欢
  • 2021-10-06
  • 2021-01-29
  • 2023-04-10
  • 2021-10-13
  • 2020-12-04
  • 2022-10-14
  • 1970-01-01
  • 2018-02-01
  • 2019-07-08
相关资源
最近更新 更多