Удалить текст оси плотности в ggpairs - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь удалить текст оси для графиков плотности в ggpairs. Итак, для этого примера я надеюсь удалить текст в фиолетовых полях:

enter image description here

Я считаю, что для удаления текста по оси Y в верхнем левом графике мне может потребоваться внести изменения в функцию, напечатанную в третьей (последней) строке этого кода:

library(GGally)
ps <- ggpairs(diamonds[,c(5,6,7)], upper = list(continuous = wrap("cor", size = 4))) + theme_gray()
attributes(ps[["plots"]][[1]]$fn)["fn"]

Я надеюсь обновить эту функцию в объекте ps, возможно, примерно так:

function (data, mapping, ..., rescale = FALSE) 
{
    mapping <- mapping_color_to_fill(mapping)
    p <- ggplot(data, mapping) + scale_y_continuous()
    if (identical(rescale, TRUE)) {
        p <- p + stat_density(aes(y = ..scaled.. * diff(range(x, 
na.rm = TRUE)) + min(x, na.rm = TRUE)), position = "identity", geom = "line", ...) + theme(axis.text.y = element_blank())
    }
    else {
        p <- p + geom_density(...) + theme(axis.text.y = element_blank())
    }
    p
}
<bytecode: 0x10cbcbb00>
<environment: namespace:GGally>

, где я просто добавил тему (axis.text.y = element_blank ()) в две части функции. Я просто не уверен, как обновить функцию таким образом в объекте PS. Я надеюсь сделать что-то вроде:

attributes(ps[["plots"]][[1]]$fn)["fn"] <- attributes(ps[["plots"]][[1]]$fn)["fn"] + theme(axis.text.y = element_blank())

За исключением более подробной информации, куда я добавляю тему (axis.text.y = element_blank ()).

Конкретный вопрос: как я могу обновить эту функцию? Общий вопрос: Если конкретный вопрос может быть неосуществимым, как я могу удалить нежелательный текст по оси Y в верхнем левом графике и нежелательный текст по оси X в нижнем правом графике?

Спасибо за обмен идеями!

1 Ответ

0 голосов
/ 17 декабря 2018

Я знаю, что это старый пост, но я только наткнулся на него и подумал, что он может быть полезен для будущих плоттеров.

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

ps <- ggpairs(diamonds[,c(5,6,7)], upper = list(continuous = wrap("cor", size = 4))) 

ps[1,1] <- ps[1,1] + theme(axis.text.y = element_blank(), 
                           axis.ticks = element_blank())

ps[3,3] <- ps[3,3] + theme(axis.text.x = element_blank(),
                           axis.ticks = element_blank())    

Критически, theme_gray() долженбудет удален из исходного слоя, потому что он переопределит другие выбранные вами темы.

Here's what the code makes

...