首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注解seaborn Factorplot

注解seaborn Factorplot
EN

Stack Overflow用户
提问于 2016-08-25 22:05:20
回答 1查看 14K关注 0票数 4

我想可视化2布尔信息存储为列在一个海运FactorPlot。

下面是我的df:

我想在同一个FactorPlot中可视化actual_groupadviced_group

目前,我只能使用hue参数绘制adviced_groups

代码如下:

代码语言:javascript
复制
 _ = sns.factorplot(x='groups',
                    y='nb_opportunities',
                    hue='adviced_groups',
                    size=6,
                    kind='bar',
                    data=df)

我尝试使用matplotlib中的ax.annotate(),但没有成功,因为据我所知,轴不是由sns.FactorPlot()方法处理的。

它可以是一个注释,给矩形的一条边着色,或者任何可以帮助可视化实际组的东西。

例如,结果可能是这样的:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-26 02:45:13

您可以使用matplotlib提供的plt.annotate方法为factorplot添加注释,如下所示:

设置:

代码语言:javascript
复制
df = pd.DataFrame({'groups':['A', 'B', 'C', 'D'],
                   'nb_opportunities':[674, 140, 114, 99],
                   'actual_group':[False, False, True, False],
                   'adviced_group':[False, True, True, True]})
print (df)

  actual_group adviced_group groups  nb_opportunities
0        False         False      A               674
1        False          True      B               140
2         True          True      C               114
3        False          True      D                99

数据操作:

选择actual_group的值为True的df的子集。index值和nb_opportunities值成为x和y的参数,而x和y则成为注释的位置。

代码语言:javascript
复制
actual_group = df.loc[df['actual_group']==True]
x = actual_group.index.tolist()[0]
y = actual_group['nb_opportunities'].values[0]

绘图:

代码语言:javascript
复制
sns.factorplot(x="groups", y="nb_opportunities", hue="adviced_group", kind='bar', data=df, 
               size=4, aspect=2)

将一些填充添加到注释的位置以及文本的位置,以说明正在绘制的条形图的宽度。

代码语言:javascript
复制
plt.annotate('actual group', xy=(x+0.2,y), xytext=(x+0.3, 300),
             arrowprops=dict(facecolor='black', shrink=0.05, headwidth=20, width=7))
plt.show()

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39147492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档