我有一个数据帧(数据帧是什么?我,e并不重要)。 我正在使用它并绘制一些点曲线。如下所示
#EXP <- 3 (example)
#EXP_VEC <- c(1:EXP)
for (i in 1:EXP)
{
gg2_plot[i] <- ggplot(subset(gg2,Ei == EXP_VEC[i] ),aes(x=hours, y=variable, fill = Mi)) + geom_point(aes(fill = Mi,color = Mi),size = 3)
}
如您所见EXP_VEC = c(1,2,3 .......)(取决于用户输入Ex:如果用户输入2,则EXP_VEC = c(1,2))
Dataframe有Ei = 1,2,3,4,........
现在我必须根据用户输入对所有这些Ei值进行绘图。
考虑一下,EXP_VEC = 3 现在for循环应该为Ei = 1,Ei = 2和Ei = 3产生三个图 对于这个,如果我写的for循环工作,那么它将完成并完成。
但显然循环不起作用。我不能使用aes_string,因为变量&#34; i&#34;在aes()之外。
例如:考虑以下数据集
dd<-data.frame(
Ei = c(1L, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2),
Mi = c(1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2),
hours = c(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3),
variable = c(0.1023488, 0.1254325, 0.1523245, 0.1225425, 0.1452354,
0.1853324, 0.1452369, 0.1241241, 0.0542232, 0.8542154, 0.021542,
0.2541254))
正如你所看到我有两套Ei,我想绘制Ei = 1的第一个图,然后在这个图旁边我想再次绘制Ei = 2。
所以我想在两个单独的变量中保存Ei = 1和Ei = 2的图,然后在某种类型的级联函数中使用,我还没有找到。 我该怎么做?
有没有一种简单的方法可以通过使用没有任何循环的ggplot来做到这一点? 如果没有,那么我怎么称呼&#34;我&#34;我的for循环中的值是什么?
答案 0 :(得分:2)
我会做这样的事情:
plot_exp <-
function(i){
dat <- subset(gg2,Ei == i )
if (nrow(dat) > 0)
ggplot(dat,aes(x=hours, y=variable, fill = Mi)) +
geom_point(aes(color = Mi),size = 3)
}
ll <- lapply(seq_len(EXP), plot_exp)
ll
是ggplot对象的图表列表。