График распределения всех столбцов для 2 различных факторов, используя ggplot? - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть фрейм данных, который можно сгенерировать следующим образом:

DD <- data.frame(group = c(rep("A", 5), rep("B", 6)), Feat1 = rnorm(11), feat2 = rnorm(11,3,5), feat3 = rnorm(11), feat4 = rnorm(11,2,3))

Я хотел бы построить распределение каждого элемента столбца для 2 факторов (A & B) столбца, называемого группой. т.е. я хотел бы иметь 4 графика для столбцов feat1, feat2, ... где у каждого есть 2 графика распределения групп A и B. Я хотел бы иметь 4 графика в одном кадре одновременно.

У вас есть идеи, как мне это сделать с помощью ggplot?

1 Ответ

0 голосов
/ 04 февраля 2020

Я не уверен на 100%, чего вы пытаетесь достичь, но я думаю, что поворот ваших данных должен привести вас на правильный путь. Если мы переместим все значения объектов в один столбец, гораздо проще разделить график на фасеты.

library(ggplot2)
library(tidyr)

DD2 <- DD %>% 
  pivot_longer(-group, names_to = "feature")

#   group feature  value
#   <fct> <chr>    <dbl>
# 1 A     Feat1    2.17 
# 2 A     feat2   -2.69 
# 3 A     feat3    3.07 
# 4 A     feat4    0.848
# 5 A     Feat1   -2.00 
# 6 A     feat2   -4.96 
# 7 A     feat3    0.798
# 8 A     feat4   -2.96 
# 9 A     Feat1   -1.65 
#10 A     feat2    3.45
# ... with 34 more rows

Теперь мы можем легко нанести грань на график по столбцу объектов:

DD2 %>%
  ggplot(aes(x = group, y = value)) +
  geom_boxplot() + # Also works with geom_violin(), geom_jitter() etc.
  facet_grid(~feature)

enter image description here

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