为Seaborn regplot添加标记注释

时间:2018-02-17 01:16:26

标签: pandas seaborn

这是我在网站上的第一个问题,但是我花了很多时间在这里找到有价值的答案!

我在整个网站上搜索过,找不到解决问题的好方法,希望有人可以提供帮助!我有一个pandas数据库,我已经创建了一个regplot,但是我真的想根据另一个列添加每个标记的注释。 这是我现有情节的代码:

fig, ax = plt.subplots()
fig.set_size_inches(8,5)
sns.regplot(x=brakev["Curb_Weight"], y=brakev["Braking_60_0"])
sns.regplot(x=brakev["Curb_Weight"], y=brakev["Braking_60_0"], fit_reg=False)

以下是图表:regplot 。我在Python Graph Gallery(以及Stack Overflow上的其他人)上找到了一个提案,但我很难让它工作:

for line in range(0,df.shape[0]):
    p1.text(df.x[line]+0.2, df.y[line], df.group[line], horizontalalignment='left', size='medium', color='black', weight='semibold')

我想在每个标记旁边的“模型”列中添加注释。我现在不太关心位置,颜色,字体大小,但这也会有所帮助。

这是我的数据库的brakev.head():

brakev.head()
    Model           Curb_Weight Braking_60_0
0   Transit Connect 3580.0      132.0
1   NV200           3690.0      129.0
2   Sprinter        3710.0      132.0
3   Express         3620.0      135.0
4   Transit         3960.0      136.0

对不起,如果这是重复,(我确定是,但我找不到!!)。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我能够找到解决方案!关键是首先将每个x,y和label元素存储到一个列表中:

Curb_Weight = brakev.Curb_Weight.tolist()
Braking_60_0 = brakev.Braking_60_0.tolist()
Model = brakev.Model.tolist()

在此之后,建议的解决方案相对容易实现:

fig, ax = plt.subplots()
fig.set_size_inches(20,12)
sns.regplot(data=brakev, x='Curb_Weight', y='Braking_60_0')
p1 = sns.regplot(data=brakev, x='Curb_Weight', y='Braking_60_0',fit_reg=False,marker='o',scatter_kws={'s':50})

for line in range(0,brakev.shape[0]):
    p1.text(Curb_Weight[line]+1.8, Braking_60_0[line], Model[line],
            horizontalalignment='left',size='medium',color='black',weight='semibold')

结果包括标记旁边的注释标签,并且相对清晰,不包括几个重叠: Diagram

如果有人有优化建议,或想法如何"翻转"当另一个标记在特定范围内时标签的方向以避免重叠,请告诉我!