двойной geom_bar, как получить значения для каждого бара - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть ggplot стран (ось X) за два разных периода времени (ось Y), поэтому двойной столбец для каждой страны. Я хотел бы видеть значения каждого бара. Я использовал geom_text, но я получаю значения в одной строке, чтобы они не были на месте. Как я могу использовать geom_text для этого типа графика?

Rcountry %>%
  gather("Type", "Value",-Country) %>%
  ggplot(aes(Country, Value, fill = Type)) +
  geom_bar(position = "dodge", stat = "identity") + 
  coord_flip()+
  theme_minimal()+scale_fill_grey()+
  theme(legend.position="bottom")+
  theme(legend.title = element_blank())+
  scale_fill_manual(values=c("darkslategray4", "darkslategrey"))+
  labs(x="Country", y="Stock of robots per thousands worker in '000")+
  geom_text(aes(label=c(X2010, X2018)), size=3.5)```

Thank you

1 Ответ

0 голосов
/ 15 апреля 2020

Это может быть достигнуто путем добавления position = position_dodge(.9) к geom_text, т. Е. Вы должны использовать позиционирование, используемое в geom_bar к geom_text, чтобы получить правильные метки. Используя mtcars в качестве примера данных, попробуйте следующее:

library(ggplot2)
library(dplyr)

mtcars2 <- mtcars %>% 
  group_by(cyl, gear) %>% 
  summarise(mpg = mean(mpg)) %>% 
  ungroup()

ggplot(mtcars2, aes(x = factor(cyl), mpg, fill = factor(gear))) + 
  geom_bar(position = "dodge", stat = "identity") +
  theme_minimal() + 
  scale_fill_grey() +
  theme(legend.position="bottom")+
  theme(legend.title = element_blank())+
  labs(x="Country", y="Stock of robots per thousands worker in '000")+
  geom_text(aes(label = mpg), position = position_dodge(.9), size=3.5) +
  coord_flip()

Создано в 2020-04-15 пакетом Представить ( v0.3.0)

...