Показать количество наблюдений в каждой группе фасетов ggplot2 - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть этот код ggplot, и я думаю, что пока все прошло хорошо, в соответствии с моими ожиданиями.

    bi_tr%>%
  filter(!is.na(bi_tr$`13e Toilet type`)) %>%

  ggplot(aes(x=`12 Income`,fill=`13e Toilet type`,na.rm = TRUE))+ #this fill comment goes to define legend
  geom_histogram(binwidth=50,color="black")+ #setting default color for aes in histogram
  facet_wrap(vars(fill=`13e Toilet type`),nrow=3)+ #make 1 column and 3 rows
  labs(x="Income (USD/month)",y="Frequency",title = "Income by Toilet Type")+ #make title of axis and title
  theme(legend.title=element_blank(),strip.text.x = element_blank())+ #strip text.x deletes the title in each group
  scale_fill_manual(values =c("blue","yellow","grey"))+#set fill color
  theme(legend.justification=c(1,.5), legend.position=c(1,.5))   #setting legend location

Но я хочу показать общее наблюдение за данными в каждой группе фасетов, я попробовал stat_summary с удовольствием .data = give.n пока что результат "объект 'give.n' не найден"

Пожалуйста, помогите новичку ie здесь ... спасибо миллион

1 Ответ

0 голосов
/ 29 апреля 2020

Без воспроизводимого набора данных трудно быть уверенным в точном решении вашего вопроса, но вы можете попытаться добавить счет в geom_text.

Вот пример, иллюстрирующий это:

df <- data.frame(Income = sample(0:1000,900, replace = TRUE),
                 Type = rep(LETTERS[1:3], each = 300))

library(dplyr)
library(ggplot2)

df %>% 
  filter(!is.na(Type)) %>%
  ggplot(aes(x = Income, fill = Type))+
  geom_histogram(binwidth = 50, color = "black")+
  facet_wrap(~Type, nrow = 3)+
  labs(x="Income (USD/month)",y="Frequency",title = "Income by Toilet Type")+ #make title of axis and title
  theme(legend.title=element_blank(),
        strip.text.x = element_blank())+ #strip text.x deletes the title in each group
  scale_fill_manual(values =c("blue","yellow","grey"))+
  theme(legend.justification=c(1,.5), legend.position=c(1,.5))+   #setting legend location
  geom_text(data = df%>% filter(!is.na(Type)) %>% count(Type), 
            aes(label = paste("Count:",n), y = Inf, x  = -Inf), vjust = 1, hjust = 0)

enter image description here

Итак, адаптированный к вашему коду, он должен выглядеть примерно так:

bi_tr%>%
  filter(!is.na(`13e Toilet type`)) %>%  
  ggplot(aes(x=`12 Income`,fill=`13e Toilet type`,na.rm = TRUE))+ #this fill comment goes to define legend
  geom_histogram(binwidth=50,color="black")+ #setting default color for aes in histogram
  facet_wrap(~`13e Toilet type`,nrow=3)+ #make 1 column and 3 rows
  labs(x="Income (USD/month)",y="Frequency",title = "Income by Toilet Type")+ #make title of axis and title
  theme(legend.title=element_blank(),strip.text.x = element_blank())+ #strip text.x deletes the title in each group
  scale_fill_manual(values =c("blue","yellow","grey"))+#set fill color
  theme(legend.justification=c(1,.5), legend.position=c(1,.5))+   #setting legend location
  geom_text(data = bi_tr%>% filter(!is.na(`13e Toilet type`)) %>% count(`13e Toilet type`), 
            aes(label = paste("Count:",n), y = Inf, x  = -Inf), vjust = 1, hjust = 0)

Отвечает ли он Ваш вопрос?

Если нет, предоставьте воспроизводимый пример набора данных bi_tr, следуя инструкциям, приведенным в этом посте: Как создать отличный воспроизводимый пример R

...