Создайте матрицу диаграмм рассеяния (пар () эквивалентных) в ggplot2

Можно ли построить матрицу графиков разброса с ggplot2 , используя хорошие функции ggplot2 , ggplot как отображение дополнительных факторов в цвет, форму и т. Д. И добавление более плавного?

Я думаю о чем-то подобном pairs base функций.

Возможно, вы захотите попробовать plotmatrix:

  library(ggplot2) data(mtcars) plotmatrix(mtcars[,1:3]) 

мне mpg (первый столбец в mtcars) не должен быть фактором. Я не проверял его, но нет причин, почему он должен быть таким. Однако я получаю график разброса 🙂


Примечание. Для справки в plotmatrix() функция plotmatrix() была заменена ggpairs() из пакета GGally , поскольку @ naught101 предлагает в следующем ответе ниже этого вопроса.

Я все еще хочу это сделать, но сюжетная matrix – дерьмо. Хэдли рекомендует использовать пакет GGally . Он имеет функцию ggpairs, которая представляет собой значительно улучшенный парный сюжет (позволяет использовать в ваших кадрах непрерывные переменные). Он отображает различные графики в каждом квадрате, в зависимости от типов переменных:

 library(GGally) ggpairs(iris, aes(colour = Species, alpha = 0.4)) 

введите описание изображения здесь

Если вы хотите получить объект ggplot (а не ggmatrix как в случае ggpairs() ), решение состоит в том, чтобы дважды расплавить данные, а затем ggplot с фасеткой. facet_wrap будет лучше, чем facet_grid при ограничении области, заданной параметром facet_grid scales = 'free' .

 require(ggplot2) require(dplyr) require(tidyr) gatherpairs <- function(data, ..., xkey = '.xkey', xvalue = '.xvalue', ykey = '.ykey', yvalue = '.yvalue', na.rm = FALSE, convert = FALSE, factor_key = FALSE) { vars <- quos(...) xkey <- enquo(xkey) xvalue <- enquo(xvalue) ykey <- enquo(ykey) yvalue <- enquo(yvalue) data %>% { cbind(gather(., key = !!xkey, value = !!xvalue, !!!vars, na.rm = na.rm, convert = convert, factor_key = factor_key), select(., !!!vars)) } %>% gather(., key = !!ykey, value = !!yvalue, !!!vars, na.rm = na.rm, convert = convert, factor_key = factor_key) } iris %>% gatherpairs(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) %>% { ggplot(., aes(x = .xvalue, y = .yvalue, color = Species)) + geom_point() + geom_smooth(method = 'lm') + facet_wrap(.xkey ~ .ykey, ncol = length(unique(.$.ykey)), scales = 'free', labeller = label_both) + scale_color_brewer(type = 'qual') } 

введите описание изображения здесь

  • Доступ к столбцам в data.table с использованием символьного вектора имен столбцов
  • Преобразование матрицы данных в матрицу отсутствия присутствия
  • Как затенять область под кривой, используя ggplot2
  • Получение пороговых значений из кривой ROC
  • Подстановка кадра данных на основе содержимого другого кадра данных
  • Повторить строки data.frame
  • может ли value.var в dcast быть списком или иметь несколько переменных значений?
  • Включение отсутствующих значений в таблицу () приводит к R
  • Как R форматы POSIXct с дробными секундами
  • Сумма в нескольких столбцах с dplyr
  • Список всех файлов, соответствующих шаблону полного пути в R
  • Давайте будем гением компьютера.