簡體   English   中英

注釋seaborn Factorplot

[英]Annotate seaborn Factorplot

我想在一個seaborn FactorPlot中可視化存儲為列的2個布爾信息。

這是我的df:

在此輸入圖像描述

我想既形象化的actual_groupadviced_group在同一FactorPlot。

現在我只能使用hue參數繪制adviced_groups

在此輸入圖像描述

使用以下代碼:

 _ = sns.factorplot(x='groups',
                    y='nb_opportunities',
                    hue='adviced_groups',
                    size=6,
                    kind='bar',
                    data=df)

我嘗試使用matplotlib中的ax.annotate()而沒有任何成功,因為 - 據我sns.FactorPlot() - Axes不是由sns.FactorPlot()方法處理的。

它可以是一個注釋,為矩形的一個邊緣着色或任何可以幫助可視化實際組的東西。

結果可能是這樣的事情:

在此輸入圖像描述

你可以使用plt.annotate提供方法matplotlib做出了注解factorplot如圖所示:

建立:

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

數據操作:

選擇df的子集,其中actual_group的值為True。 index值和nb_opportunities值成為x和y的參數,它們成為注釋的位置。

actual_group = df.loc[df['actual_group']==True]
x = actual_group.index.tolist()[0]
y = actual_group['nb_opportunities'].values[0]

繪圖:

sns.factorplot(x="groups", y="nb_opportunities", hue="adviced_group", kind='bar', data=df, 
               size=4, aspect=2)

將一些填充添加到注釋的位置以及文本的位置以考慮要繪制的條的寬度。

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

圖片

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM