добавить двойные метки на морском рождении, включая нормализованный счет - PullRequest
0 голосов
/ 11 октября 2019

Я строю несколько графов на графике, используя seaborn

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

enter image description here

Теперь я хотел бы показать на моем xlabel одновременно счетчик (как показано сейчас), и одновременно доля общего количества для того же бара в виде% (считать / суммировать все значения) Можно ли этого легко достичь?

1 Ответ

1 голос
/ 11 октября 2019

Вы можете использовать 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

...