Ошибка отсутствующего значения / пустые данные при попытке добавить метки к гистограмме с использованием geom_text с ggplot2 - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь добавить метки к своему столбчатому столбцу, который я сделал с помощью ggplot2, но получаю странную ошибку.

Я сделал свой стол так:

dd <- read.table(text = "ORIGIN ANIMAL SEX COUNT PR
             1 Canada Dog M 3 37.5
             2 Canada Dog F 5 62.5
             3 Canada Bunny M 3 75
             4 Canada Bunny F 1 25
             5 US Bunny M 9 90
             6 US Bunny F 1 10
             7 US Dog M 3 50
             8 US Dog F 3 50", sep = "", header = TRUE)

и сделал рисунок:

p <-ggplot() + geom_bar(data = dd, aes(y = PR, x = ANIMAL, fill = SEX), 
  stat = "identity", position='stack') + 
  labs( y = "Proportion", x = "") +
  theme_bw() +
  facet_grid( ~ ORIGIN) 

производящая:

enter image description here

Я пытаюсь добавить метки COUNT к данным, аналогично тому, что было сделано в этой теме:

Отображение значений данных на гистограмме с накоплением в ggplot2

Однако, когда я пытаюсь добавить метки, используя:

p + geom_text(aes(labels = COUNT)

Я получаю ошибку:

Error in if (empty(data)) { : missing value where TRUE/FALSE needed

Я пытался явно указать все логические аргументы для geom_text, но R просто игнорирует неизвестную эстетику.

Кто-нибудь может объяснить, что я здесь делаю неправильно?

Спасибо

1 Ответ

0 голосов
/ 05 июля 2018

Вам необходимо переместить общие аргументы в основную функцию, в частности, data и x, y эстетика.

library(ggplot2)

p <-ggplot(data = dd, aes(y = PR, x = ANIMAL)) + 
             geom_col(aes(fill = SEX), position='stack') + 
  labs( y = "Proportion", x = "") +
  theme_bw() +
  facet_grid( ~ ORIGIN)

p + geom_text(aes(label = COUNT), position=position_stack(vjust=0.5), color="white")

Обратите внимание, что geom_col эквивалентно geom_bar с stat="identity". Вы также можете настроить метки по центру столбцов с помощью аргумента vjust в position_stack()

here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...