我正在尝试删除 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 轴文本?
感谢您分享想法!
最佳答案
我知道这是一篇旧文章,但我只是偶然发现它并认为它可能对 future 的绘图者有用。
我不知道如何改变你的功能,但删除这些轴很容易。 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()
必须从原始分层中删除,因为它将覆盖您所做的其他主题选择。
关于删除 ggpairs 中的密度轴文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52280514/