【发布时间】:2020-02-24 20:08:43
【问题描述】:
这是我遇到的 ggplot+ lapply+ 子集问题
这里是一个可重现的例子
stages=as.vector(c("1","2","3","1","1","1","1","1","1","2","2","2","2","2","3","3","3","3","3","3","3","3","3","3","3","1","1"))
x13=c(0.9, 0, 0, 0.692, 0,0,0,0,0,0,0,0,0,0.53, 0.5,0,2,3,55,49,64,9,4,1,0,54,0)
y13=c(0.9, 0, 0, 0.692, 0,0,0,0,0,0,0,0,0.53,0.9, 0, 0, 0.692, 0,0,0,0,0,0,0,0,0,0.53)
countmatrix=cbind(x13,stages,y13)
countmatrix=as.data.frame(countmatrix)
p2=ggplot(data=countmatrix, aes(stages, fill = x13))+
geom_bar(position="stack", fill="gray34")+
geom_bar(data=subset(countmatrix, x13!=0), aes(fill=stages ))
p2 ````
一旦我将它放入复制许多变量的函数中,它似乎不起作用(子集部分至少似乎不起作用。 这是我使用的代码。
barplotseries <- function(x){
y=as.name(x)
ggplot(data=countmatrix, aes(stages, fill = y))+
geom_bar(position="stack", fill="gray34")+
geom_bar(data=subset(countmatrix,y!=0), aes(fill=stages ))
}
x=c("x13","y13")
p2=lapply(x, barplotseries)
do.call("grid.arrange", c(p2, ncol=2))
请告诉我您的建议(我应该使用 For 吗?)我不知道如何使用它。
谢谢
【问题讨论】:
-
您的可重现示例不包括 stages。
-
使用变量将绘图保存在函数内部,以便您可以在函数外部访问它。
-
此外,可重现的示例不会呈现这样的图。请务必在空的 R 环境中重新运行发布的代码(即没有以前的 globalenv 对象),以确保所有编译和渲染都相应地进行。
-
对不起,我忘了复制第一行。矢量阶段现在。现在可以重现了。