Как раскрасить по классам в GGally ggpairs - ggplot2 - R и встроить код в функцию
Я разработал код с помощью cnicollet - см. Ее комментарии ниже - который настраивает ggpairs из пакета GGally - см. Ниже - и назначает цвета по годам (чтобы различия между годами стали очевидными):
library(ISLR)
library(data.table)
library(GGally)
library(ggplot2)
data(Auto, package = "ISLR")
Auto2 <- Auto[, c(1:3, 7:8)]
Auto2$year = ifelse(Auto2$year < 76, 0, 1)
Auto2$cylinders <- factor(Auto2$cylinders)
Auto2$origin <- factor(Auto2$origin)
Auto2$year <- factor(Auto2$year)
ggpairs(Auto2 , ggplot2::aes(colour=year),
lower = list(continuous = wrap("points", color = "red", alpha = 0.5),
combo = wrap("box", color = "orange", alpha = 0.3),
discrete = wrap("facetbar", color = "yellow", alpha = 0.3) ),
diag = list(continuous = wrap("densityDiag", color = "blue", alpha = 0.5) ))
Теперь я хочу встроить вызов в функцию, которая будет иметь в качестве аргументов данные и имя переменной, представляющей класс, и будет возвращать график в виде объекта без его отображения.
Первая попытка:
pairplots = function(data, class){
library(GGally)
library(ggplot2)
p = ggpairs(data , ggplot2::aes(colour= class),
lower = list(continuous = wrap("points", color = "red", alpha = 0.5),
combo = wrap("box", color = "orange", alpha = 0.3),
discrete = wrap("facetbar", color = "yellow", alpha = 0.3) ),
diag = list(continuous = wrap("densityDiag", color = "blue", alpha = 0.5) ))
p
}
pairplots(data = Auto2, class = 'year')
Вторая попытка:
pairplots = function(data, class){
library(GGally)
library(ggplot2)
p = ggpairs(data , ggplot2::aes(colour= data[, class]),
lower = list(continuous = wrap("points", color = "red", alpha = 0.5),
combo = wrap("box", color = "orange", alpha = 0.3),
discrete = wrap("facetbar", color = "yellow", alpha = 0.3) ),
diag = list(continuous = wrap("densityDiag", color = "blue", alpha = 0.5) ))
p
}
pairplots(data = Auto2, class = 'year')
Обе попытки приводят к исключениям.
Ваш совет будет оценен.