Jak umieścić etykiety nad paskiem geom dla każdego paska w R za pomocą ggplot2

Znalazłem to, Jak umieścić etykiety nad geom_barem w R z ggplot2 , ale to po prostu umieścić etykiety (numery) nad jednym paskiem.

Oto, powiedzmy, dwa paski dla każdej osi x, jak zrobić to samo?

Moje dane i Kod wyglądają tak:

dat <- read.table(text = "sample Types Number
sample1 A   3641
sample2 A   3119
sample1 B   15815
sample2 B   12334
sample1 C   2706
sample2 C   3147", header=TRUE)

library(ggplot2)
bar <- ggplot(data=dat, aes(x=Types, y=Number, fill=sample)) + 
  geom_bar(position = 'dodge') + geom_text(aes(label=Number))

Wtedy otrzymamy: Tutaj wpisz opis obrazka

Wydaje się, że teksty liczb są również umieszczone we wzorze "dodge". Przeszukałem podręcznik geom_text , aby znaleźć jakieś informacje, ale nie mogę tego zrobić.

Sugestie?

Author: zx8754, 2012-08-18

2 answers

Spróbuj tego:

ggplot(data=dat, aes(x=Types, y=Number, fill=sample)) + 
     geom_bar(position = 'dodge', stat='identity') +
     geom_text(aes(label=Number), position=position_dodge(width=0.9), vjust=-0.25)

wyjście ggplot

 89
Author: rcs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-19 09:52:36

Aby dodać do odpowiedzi rcs, jeśli chcesz użyć position_dodge () z geom_bar (), gdy x jest POSIX.ct Data, należy pomnożyć Szerokość przez 86400, np.,

ggplot(data=dat, aes(x=Types, y=Number, fill=sample)) + 
 geom_bar(position = "dodge", stat = 'identity') +
 geom_text(aes(label=Number), position=position_dodge(width=0.9*86400), vjust=-0.25)
 3
Author: matmat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-23 17:51:37