【发布时间】:2019-08-05 11:40:49
【问题描述】:
我想根据一个变量的值对我的数据集进行子集化,并以该变量的值作为绘图名称和 ggtitle 绘制一个 ggplot 并保存每个绘图。
最后,我想将所有图表合并到一个页面中。
这是一个简化的例子。
y=rnorm(100, 0,1)
x=sample(100, 5, replace = T)
k=5
z=sample(k, 100, replace=T)
z <- factor(z, levels = c(1,2,3,4,5),
labels = c("red", "blue", "green", "purple", "yellow"))
dat=data.frame(y=y, x=x, z=z)
library(ggplot2)
for(i in seq_len(k))
{
dat2 = data.frame(dat[dat$z=='i',])
i <- ggplot(dat2, aes(x=x, y=y)) +
geom_point() +
ggtitle(i)
}
library(gridExtra)
grid.arrange(red, blue, green, purple,yellow, nrow = 2)
我无法将变量保存为 i 并与 ggtitle() 保持一致。每个图表的标题应该是不同的颜色:红色,蓝色,绿色......等。
谢谢。
【问题讨论】:
-
dat[dat$z=='i',]应该是dat[dat$z==i,]以使您的代码正常工作。为什么在循环中将绘图分配给i?这很令人困惑。无论如何,您的整个代码都可以通过单行调用来替换以添加方面:) -
哦,我刚刚意识到您想要通过
i <- ggplot(...)实现的目标!那是行不通的——我会更新我的答案。