Я хочу создать сетку графиков распределения плотности со средней пунктирной вертикальной линией для нескольких переменных, которые есть в наборе данных. Используя набор данных mtcars в качестве примера, код для графика с одной переменной будет следующим:
ggplot(mtcars, aes(x = mpg)) + geom_density() + geom_vline(aes(xintercept =
mean(mpg)), linetype = "dashed", size = 0.6)
Я не понимаю, как я изменяю это, чтобы он перебирал указанные переменные в моем наборе данных и создавал сетку с графиками каждой из них. Похоже, это потребует некоторой комбинации добавления facet_grid и аргумента «vars», но я пробовал несколько комбинаций безуспешно.
Похоже, что во всех примерах, которые я могу найти в Интернете, facet_grid разбивает графики на подмножества переменной, сохраняя при этом одинаковые x и y для каждого графика, но я хочу, чтобы график x варьировался на каждом графике, а y - плотность ценностей.
Пытаясь решить эту проблему, я также понимаю, что новый выпуск ggplot включает что-то, связанное с «квазиквотированием», которое может помочь решить мою проблему (https://www.tidyverse.org/articles/2018/07/ggplot2-tidy-rating/), но опять же, я не мог выяснить, как применить приведенные здесь примеры к моей собственной проблеме.
facet_grid
, подходят, вам просто не хватает того факта, что вам нужно немного преобразовать свои данные, чтобы они работали. Вы будете использовать что-то вродеgather
из tidyr для преобразования набора переменных (столбцов) в одну пару столбцов: столбец с ключом и столбец со значением. Затем вы столкнетесь с ключевой переменной, а переменная-значение будет вашей новой переменной y. - person joran   schedule 26.11.2018mt_density <- mtcars %>% gather(disp, hp, key = "variable", value = "value") ggplot(mt_density, aes(x = value)) + geom_density() + geom_vline(aes(xintercept = mean(value)), linetype = "dashed", size = 0.6) + facet_grid(. ~ variable)
- person Ella Wind   schedule 26.11.2018