Наложение двух быстрых графиков всех переменных из нескольких фреймов данных - PullRequest
0 голосов
/ 09 февраля 2020

Я загрузил datafame и сделал быстрый график всех переменных, используя:

df %>%
  keep(is.numeric) %>% 
  gather() %>% 
  ggplot(aes(value)) +
  facet_wrap(~ key, scales = "free") +
  geom_histogram() 

Ссылка: https://drsimonj.svbtle.com/quick-plot-of-all-variables

Я разделил этот фрейм данных в два фрейма данных на основе двоичной переменной (в моем случае, Smoker / Non-smoker) в одном из столбцов. Я хотел бы выполнить один и тот же быстрый график всех переменных, но наложил разноцветные гистограммы для каждого из новых фреймов данных (чтобы увидеть, значительно ли они отличаются).

Я обнаружил следующее:

Наложение двух гистограмм ggplot facet_wrap

Но он только делает facet_wrap над одной переменной. Есть ли способ сделать это, отфильтровав собранный кадр данных по двоичному значению что-то вроде:

df %>%
  keep(is.numeric) %>% 
  gather() %>% 
  ggplot(aes(value)) +
  facet_wrap(~ key, scales = "free") +
  geom_histogram(subset(df,Smoker==1), fill = "Red", alpha=0.3) +
  geom_histogram(subset(df,Smoker==2), fill = "Blue", alpha=0.3) 

Идея была бы наложить следующее:

df_s %>%
  keep(is.numeric) %>% 
  gather() %>% 
  ggplot(aes(value)) +
  facet_wrap(~ key, scales = "free") +
  geom_histogram(fill = "Red", alpha=0.3) 

df_ns %>%
  keep(is.numeric) %>% 
  gather() %>% 
  ggplot(aes(value)) +
  facet_wrap(~ key, scales = "free") +
  geom_histogram(fill = "Blue", alpha=0.3)

Я мог бы сделать это будет al oop, но, если возможно, хотел бы сделать это с парами ключ-значение df.

1 Ответ

0 голосов
/ 09 февраля 2020
    df %>% 
      keep(is.numeric) %>% # you may need to remove this as smoker will need to be factor for grouping to work
      tidyr::gather(key,value, -Smoker) %>% #- preserve smoker and use to colour
      ggplot(aes(value, fill = Smoker)) +
      facet_wrap(~ key, scales = "free") +
      geom_histogram(alpha = 0.30) +
      scale_fill_manual(values = c("red","blue"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...