Як поставити мітки над geom_bar для кожного рядка в R за допомогою ggplot2


99

Я знайшов це: Як поставити мітки над geom_bar у R за допомогою ggplot2 , але він просто розміщує мітки (цифри) лише на одному рядку.

Ось, скажімо, два стовпчики для кожної осі х, як зробити те саме?

Мої дані та код виглядають так:

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))

Тоді ми отримаємо: введіть тут опис зображення

Здається, числові тексти також розташовані за шаблоном "ухилення". Я шукав посібник geom_text, щоб знайти деяку інформацію, але не можу змусити це працювати.

Пропозиції?

Відповіді:


142

Спробуйте це:

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)

Висновок ggplot


2
(+1) Ви також можете додати vjust = -0.5після position()твердження так, щоб значення розміщувалися безпосередньо над стовпчиками.
smillig

2
Величезне спасибі, до речі, код пропонує встановити ymax, отже aes(x=Types, y=Number, fill=sample, ymax = 16000), буде створено ширшу верхню область для осі y, так що 15815 буде краще показано.
Пуріні,

Я отримую таку помилку: Помилка: stat_count () не можна використовувати з будь-якою естетикою.
userJT

3
ця відповідь має більш новий синтаксис stackoverflow.com/questions/33079500 / ...
userJT

2
@Seymourgeom_text(..., angle=-90)
rcs

4

Щоб додати до відповіді rcs, якщо ви хочете використовувати position_dodge () з geom_bar (), коли x - дата POSIX.ct, потрібно помножити ширину на 86400, наприклад,

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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.