Как разместить надписи на geom_bar для каждого бара в R с помощью ggplot2


101

Я нашел это, Как разместить метки на geom_bar в R с помощью ggplot2 , но он просто помещал метки (числа) только на одну полосу.

Вот, скажем, две полосы для каждой оси x, как сделать то же самое?

Мои данные и код выглядят так:

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, чтобы найти некоторую информацию, но не могу заставить его работать.

Предложения?

Ответы:


143

Попробуй это:

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 будет лучше отображаться.
Puriney

Я получаю эту ошибку: Ошибка: 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.