ggplot2多个地块保留旧地块

我试图从数据框中绘制30个直方图

'data.frame':   569 obs. of  32 variables:
 $ ID       : int  842302 842517 84300903 84348301 84358402 843786 844359     84458202 844981 84501001 ...
 $ Diag     : Factor w/ 2 levels "B","M": 2 2 2 2 2 2 2 2 2 2 ...
 $ Radius   : num  5.1 5.84 5.59 3.24 5.76 ...
 $ Text     : num  2.41 4.13 4.94 4.74 3.33 ...
 etc....

我想将Diag(Malign或Benign癌症)的所有属性组合在一起,并将它们作为一个多点(30个单独的直方图)保存在一个文件中。

但是,当我按照我的方式(迭代列)时,ggplot似乎以某种方式保留旧数据,并且不会根据当前列进行更改,除非我手动执行。

这是我的图形循环,试图将每个图保存在列表中:

graph_att<-function(to=10){
  plots<-vector("list",to)
for (i in 1:to){
  dev.next()
  ind<-i+2
  a<-t[1,i] #data.frame with vertical lines I want in the histograms

  g<-ggplot(dataNorm[,c(2,ind)], aes(dataNorm[,ind]))+geom_histogram(aes(fill=Diag), 
  position="identity", colour="#999999", alpha=0.8, binwidth = 0.25)+
  geom_vline(xintercept = a) + 
  scale_fill_manual(values = c("#0072B2", "#E69F00"))

plots[[i]]<-g
rm(g) #trying to make sure its a new plot
}

return(plots)
}

我使用http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/中的多点功能将它们一起绘制。 但是我得到这个输出,它只改变垂直线并且只保留一个直方图。

我也有一个想法来创建另一个data.frame,并在每个列中放置$ Diag和其他变量,但不知道如何迭代它们。 因为我认为ggplot不访问我想要的列。

谢谢你的帮助。

PS:这就是我得到的

我的输出


aes做非标准评估。 它期望传递给data参数的data.frame的列名(不带引号)。 您可以使用aes_string将字段名称作为字符串传递:

aes_string(names(dataNorm)[ind])
链接地址: http://www.djcxy.com/p/30847.html

上一篇: ggplot2 multiple plots keeps old plots

下一篇: histogram for data frame binned data