我正在使用Seaborn绘制一些计谋图
ax = sns.countplot(y='mydata', data=df,order = myorder).
现在,我想同时在我的xlabel上显示计数(如现在所示),并且同时显示同一条形占总数的百分比(%/ count / sum所有计数) 可以轻松实现吗?
答案 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()