gpt4 book ai didi

r - 在 ggplot 中的常见值周围添加矩形

转载 作者:行者123 更新时间:2023-12-04 11:55:26 25 4
gpt4 key购买 nike

当我进行实验设计时,我使用 ggplot 来显示布局。这是一个简单的例子:

df <- data.frame(Block=rep(1:2, each=18),
Row=rep(1:9, 4),
Col=rep(1:4, each=9),
Treat=sample(c(1:6),replace=F))

我将绘制如下:
df.p <- ggplot(df, aes(Row, Col)) + geom_tile(aes(fill=as.factor(Treat)))

给予:

design

有时我在设计中有一个结构,我想通过在它周围放一个框来突出显示,例如主图。在这种情况下:
df$Mainplot <- ceiling(df$Row/3) + 3*(ceiling(df$Col/2) - 1)

然后我使用 geom_rect 和一些需要针对每个设计进行调整的杂乱代码来生成如下内容:

designwithmainplot

问题:如何以简单的方式在主图周围添加矩形?这似乎是一个足够简单的问题,但我还没有找到明显的方法。我可以将颜色或其他美学映射到主要情节,但我似乎无法用盒子包围它们。任何指针都非常感谢。

最佳答案

这是一个可能的解决方案,我创建一个辅助 data.frame 用于绘制边界 geom_rect() .我不确定这是否像您想要的那样简单!我希望计算矩形坐标的代码只需做一点额外的努力就可以重用/通用。

library(ggplot2)

# Load example data.
df = data.frame(Block=rep(1:2, each=18),
Row=rep(1:9, 4),
Col=rep(1:4, each=9),
Treat=sample(c(1:6),replace=F))
df$Mainplot = ceiling(df$Row/3) + 3*(ceiling(df$Col/2) - 1)

# Create an auxiliary data.frame for plotting borders.
group_dat = data.frame(Mainplot=sort(unique(df$Mainplot)),
xmin=0, xmax=0, ymin=0, ymax=0)
# Fill data.frame with appropriate values.
for(i in 1:nrow(group_dat)) {
item = group_dat$Mainplot[i]
tmp = df[df$Mainplot == item, ]
group_dat[i, "xmin"] = min(tmp$Row) - 0.5
group_dat[i, "xmax"] = max(tmp$Row) + 0.5
group_dat[i, "ymin"] = min(tmp$Col) - 0.5
group_dat[i, "ymax"] = max(tmp$Col) + 0.5
}


p2 = ggplot() +
geom_tile(data=df, aes(x=Row, y=Col, fill=factor(Treat)),
colour="grey30", size=0.35) +
geom_rect(data=group_dat, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax),
size=1.4, colour="grey30", fill=NA)

ggsave(filename="plot_2.png", plot=p2, height=3, width=6.5)

enter image description here

关于r - 在 ggplot 中的常见值周围添加矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13646273/

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