在seaborn上添加xticks,包括归一化计数

时间:2019-10-11 05:57:30

标签: python matplotlib bar-chart seaborn

我正在使用Seaborn绘制一些计谋图

ax = sns.countplot(y='mydata', data=df,order = myorder).

enter image description here

现在,我想同时在我的xlabel上显示计数(如现在所示),并且同时显示同一条形占总数的百分比(%/ count / sum所有计数) 可以轻松实现吗?

1 个答案:

答案 0 :(得分:1)

您可以使用FuncFormatter创建自定义标签。在这种情况下,您可以将计数除以总数,然后放在换行符之后。

import numpy as np; np.random.seed(42)
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter

p = np.random.randint(2,26,10)
s = pd.Series(np.random.choice(np.arange(40,50), size=400, p=p/p.sum()))

counts = s.value_counts(sort=False)
total = counts.sum()

ax = counts.plot.barh()
ax.set_xlabel("counts")

fmt = lambda x, pos: f"{x:g}\n{x/total*100:g}%"
ax.xaxis.set_major_formatter(FuncFormatter(fmt))
ax.figure.subplots_adjust(bottom=0.2)
plt.show()

enter image description here