Как раскрасить по классам в 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')

Обе попытки приводят к исключениям.

Ваш совет будет оценен.

0 ответов

Другие вопросы по тегам