嵌套调用ggplot无法生成绘图,除非绘图调用最后

时间:2015-05-28 19:01:39

标签: r function ggplot2 environments

我有一个功能:

MakeTxHistogram <-function(d,x,plot.labels) {
  print(dim(d))
  ggplot(data=d) +
    geom_histogram(aes_string(x=x,y="..density..",fill="var1")) + 
    scale_x_log10() + facet_grid( var1~ var2 ) +  labs(title=plot.labels[1],x=plot.labels[2]) +
    theme
}
当从脚本或控制台直接调用时,

MakeTxHistogram完全符合我的要求。所以我创建了一个新函数:

TestAndPlot<-function() {
 MakeTxHistogram(d1,x,plot.labels)
 MakeTxHistogram(d2,x,plot.labels)
 RunAStatisticalTest()
}

当我调用TestAndPlot()时,两次调用MakeTxHistogram(...)都会执行,但不生成绘图(但print()函数有效)。相反,我将TestAndPlot写为:

TestAndPlot<-function() {
 RunAStatisticalTest()
 MakeTxHistogram(d1,x1,plot.labels1)
 MakeTxHistogram(d2,x2,plot.labels2)
}

然后RunAStatisticalTest()工作,第一次调用MakeTxHistogram但不生成绘图,第二次调用MakeTxHistogram执行成功生成情节。

尝试实施建议here之类的解决方案,包括将environment设置为本地环境,以及(显然)使用aes_string()而不是aes()。任何人都可以提出问题的根源和可能的解决方案吗?我可以直接回到调用这些函数,但宁愿能够将它们嵌入到某些东西中(或理解为什么我不能/不应该这样做)。

谢谢!

0 个答案:

没有答案