Как поместить этикетки в штабелированную полосу с помощью plotnine

У меня есть следующее dataframe

import pandas as pd
from plotnine import *

df = pd.DataFrame({
    'variable': ['gender', 'gender', 'age', 'age', 'age', 'income', 'income', 'income', 'income'],
    'category': ['Female', 'Male', '1-24', '25-54', '55+', 'Lo', 'Lo-Med', 'Med', 'High'],
    'value': [60, 40, 50, 30, 20, 10, 25, 25, 40],
})
df['variable'] = pd.Categorical(df['variable'], categories=['gender', 'age', 'income'])

Я использую следующий код, чтобы получить гистограмму

(ggplot(df, aes(x='variable', y='value', fill='category'))
 + geom_col()
)

Код выше был взят отсюда

Как я могу поставить этикетки, (в этом случае values), в середине каждой категории на каждом баре?

0 ответов

Вы можете сделать это так же, как в ggplot2 (plotnine воспроизводит его с высокой точностью), сопоставив "значение" с метками в эстетике и добавив geom_text (с позиционированием стека, в этом примере вертикально по центру):

(ggplot(df, aes(x='variable', y='value', fill='category', label='value'))
 + geom_col()
 + geom_text(position=position_stack(vjust=0.5))
)

Смотрите этот ответ для более подробного объяснения этой функции в оригинальном ggplot2.

Другие вопросы по тегам