首页 > 解决方案 > 删除 ggpairs 中的密度轴文本

问题描述

我正在尝试删除 ggpairs 中密度图的轴文本。所以,对于这个例子,我希望删除紫色框中的文本:

在此处输入图像描述

我相信要删除左上图中的 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 轴文本?

感谢您分享想法!

标签: rggplot2ggally

解决方案


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

我不知道如何更改您的功能,但删除这些轴很容易。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()必须从原始分层中删除,因为它会覆盖您所做的其他主题选择。

这是代码的作用


推荐阅读