r - 删除 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 轴文本?
感谢您分享想法!
解决方案
我知道这是一篇旧帖子,但我只是偶然发现它并认为它可能对未来的绘图员有用。
我不知道如何更改您的功能,但删除这些轴很容易。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()
必须从原始分层中删除,因为它会覆盖您所做的其他主题选择。
推荐阅读
- modeling - 谓词不一致
- javascript - 更改属性会中断其他功能
- python - 用 pd.read_sql_query 声明变量
- pine-script - Pine Script 中的 Tradingview 策略头寸大小不起作用
- python - 从其他 df 映射特定值
- html - 变量在对象内外得到不同的结果
- python - FileNotFound : [WinError 2] The system cannot find the file specified” Error while using selenium
- firebase - Flutter-Firestore“参数类型'Map
Function()' 不能分配给参数类型'Map " - javascript - querySelector 无法访问传递的 id
- debugging - 什么会导致单个 Emacs 帧冻结(但不是整个 Emacs)?