Вывести значение ..count .. в geom_label () - PullRequest
1 голос
/ 15 апреля 2020

Я пытался получить доступ к значению ..count .. в ggplot2 есть ли доступ к этому значению? В настоящий момент я получаю следующую ошибку:

Ошибка: эстетика должна быть действительной вычисленной статистикой. Проблемные эстетики c (s): label = ..count ... Вы отобразили свою статистику в неправильном слое?

Как я могу получить доступ к тому значению, которое было вычислено ранее? Вот код:

transfusion %>%
  mutate(Group = ifelse(whether.he.she.donated.blood.in.March.2007 == 0, "Didn't donate", "Donated")) %>%
  ggplot(aes(x=Group, fill = Group)) + 
  scale_y_continuous(breaks = seq(0, 500, by = 100)) +
  ylab("Count of people") +
  ggtitle("People who donated blood in march 2007") +
  geom_bar(aes(y = (..count..))) +
  geom_label(aes(label = ..count..))

Ответы [ 2 ]

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

Это решение, использующее ..count... Все, что вам нужно сделать, это попросить geom_label вычислить его.

library(dplyr)
library(ggplot2)

transfusion %>%
  mutate(Group = ifelse(whether.he.she.donated.blood.in.March.2007 == 0, "Didn't donate", "Donated")) %>%
  ggplot(aes(x = Group, fill = Group)) + 
  geom_bar(position = "dodge") +
  geom_label(stat = 'count', aes(label = ..count..), 
             vjust = -0.1,
             show.legend = FALSE) +
  scale_y_continuous(breaks = seq(0, 500, by = 100)) +
  ylab("Count of people") +
  ggtitle("People who donated blood in march 2007") +
  theme(plot.margin = margin(2, 0.8, 2, 0.8))

enter image description here

Данные

set.seed(1234)
transfusion <- data.frame(
  whether.he.she.donated.blood.in.March.2007 = rbinom(800, 1, prob = c(0.3, 0.7))
)
1 голос
/ 15 апреля 2020

Используя mtcars в качестве примера данных, этого можно достичь, используя stat = "count" внутри geom_label и используя after_stat (новое в ggplot2 3.3.0) для отображения count на label

library(ggplot2)

#mutate(Group = ifelse(whether.he.she.donated.blood.in.March.2007 == 0, "Didn't donate", "Donated")) %>%
ggplot(mtcars, aes(x = factor(cyl), fill = factor(cyl))) + 
  #scale_y_continuous(breaks = seq(0, 500, by = 100)) +
  #ylab("Count of people") +
  #ggtitle("People who donated blood in march 2007") +
  geom_bar() +
  geom_label(aes(label = after_stat(count)), stat = "count")

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

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