Изменить положение меток в пирамиде населения (ggplot2)

У меня проблема с маркировкой моей пирамиды населения в R Studio. Я хотел бы настроить положение меток в двух разных направлениях, в зависимости от того, на какой стороне они находятся. Точнее, я хочу, чтобы значения слева (мужчины) были немного левее, чтобы они были прилегали к левым полосам, а значения справа (женщины) немного правее, чтобы они были рядом с правыми полосами.

This is my data and the code I have so far:
#   Geschlecht      Alter Anzahl     Prozent
#1        Bock        0.5      6 0.006276151
#2        Bock        1.5    172 0.179916318
#3        Bock       10.5     23 0.024058577
#4        Bock       11.5      8 0.008368201
#5        Bock       12.5     14 0.014644351
#Translation column names: Sex, Age, Count, Percentage

ggplot(Verteilung,aes(x = Alter,
                       y = ifelse(Geschlecht == 'Bock', -Anzahl, Anzahl),
                       fill = Geschlecht,
                       label = Anzahl)) +
  geom_bar(stat = 'identity') +
  scale_y_continuous(name = 'Anzahl', labels = abs, breaks = seq(-200,200,10)) +
  scale_x_discrete(name = 'Alter', limits = c('1.5','2.5','3.5','4.5','5.5','6.5','7.5','8.5','9.5',
'10.5','11.5','12.5','13.5','14.5','15.5','16.5','17.5','18.5','19.5')) +
  coord_flip() +
  theme_minimal() +
  ggtitle('Zusammensetzung Verteilung nach Alter und Geschlecht') +
  scale_fill_manual(values = c('steelblue1', 'hotpink1')) +
  geom_text(aes(label = Anzahl), size = 4)

Я пытался решить эту проблему с помощью position_stack и position_nudge, но не мог понять, как сдвигать значения в двух разных направлениях в зависимости от пола (пробовал с функцией ifelse). Кто-нибудь знает, как это решить? Спасибо!

Моя текущая пирамида населения. Я хотел бы, чтобы метки располагались рядом с полосами, т. е. немного левее с левой стороны и немного правее с правой стороны


person Keni    schedule 15.01.2021    source источник
comment
Попробуйте с geom_text(aes(label = ..., hjust = ifelse(Geschlecht == "Bock", 1, 0)) или наоборот, если метки выровнены по левому или правому краю с полосами. (: BTW: Пирамида популяции коз? Довольно интересно. (;   -  person stefan    schedule 15.01.2021
comment
hjust = 'outside' может работать.   -  person Axeman    schedule 15.01.2021


Ответы (1)


Это сработало:

geom_text(aes(hjust = ifelse(Geschlecht == "Bock", 1, 0))
person Keni    schedule 16.01.2021