删除ggpairs中的密度轴文本

时间:2018-09-11 16:36:16

标签: r ggplot2 ggally

我正在尝试删除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>

我在其中简单地将theme(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 :(得分:2)

我知道这是一篇旧文章,但是我只是偶然发现它,并且认为它可能对将来的绘图员有用。

我不知道如何更改功能,但是删除这些轴很容易。 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