gpt4 book ai didi

r - 在ggplot2对象的现有图层下插入图层

转载 作者:行者123 更新时间:2023-12-03 10:57:57 25 4
gpt4 key购买 nike

给定一个现有的绘图对象,是否可以在现有图层上添加一个 UNDERNEATH 图层?

例如,在下图中,是否可以将geom_boxplot()添加到P中,以使箱线图在 geom_point()下显示为

## Starting from: 
library(ggplot2)
P <- ggplot(data=dat, aes(x=id, y=val)) + geom_point()

## This adds boxplot, but obscures some of the points
P + geom_boxplot()

预期产量:
# Which is essentially
ggplot(data=dat, aes(x=id, y=val)) + geom_boxplot() + geom_point()
## However, this involves re-coding all of P (after the point insertion of the new layer).
## which is what I am hoping to avoid.



奖励问题:如果现有绘图中有多个图层,是否可以指示将新图层(相对于现有图层)专门插入何处?

样本数据
set.seed(1)
N <- 100
id <- c("A", "B")
dat <- data.frame(id=sample(id, N, TRUE), val=rnorm(N))

最佳答案

感谢@baptiste为我指出正确的方向。要在所有其他图层下面插入一个图层,只需修改绘图对象的layers元素。

## For example:
P$layers <- c(geom_boxplot(), P$layers)

奖励问题的答案:

这个方便的小功能在指定的z级别插入一个图层:
insertLayer <- function(P, after=0, ...) {
# P : Plot object
# after : Position where to insert new layers, relative to existing layers
# ... : additional layers, separated by commas (,) instead of plus sign (+)

if (after < 0)
after <- after + length(P$layers)

if (!length(P$layers))
P$layers <- list(...)
else
P$layers <- append(P$layers, list(...), after)

return(P)
}

关于r - 在ggplot2对象的现有图层下插入图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20249653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com