在Knitr文档中嵌入ggplot2图形:无法找到函数ggplot

时间:2015-10-12 13:48:37

标签: r ggplot2 knitr

我正在制作一份文件,同时使用knitrggplot2。我是knitr和TeX本人的新手,因此并不过分熟悉我正在做的所有事情。

当我打开RStudio来完成工作时,我首先运行以下两个命令:

require("knitr")
require("ggplot2")

然后我点击编译PDF。我有以下代码抛出错误:

<<histogram, echo=FALSE, fig.align='center'>>=
summary(los$hosp_svc)
summary(los$Pt_Age)

binsize = diff(range(los$Pt_Age)/30)
ggplot(los, aes(x = Pt_Age)) + 
  geom_histogram(binwidth = binsize, fill = "red", 
                 alpha = 0.315, colour = 'black') +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank()) +
  xlab("Patient Age in Years") +
  ylab("Frequency/Count") +
  ggtitle("Histogram of Patient Age")
@

我得到的错误是找不到ggplot函数,这很奇怪,因为如果我只是在控制台中运行上面的代码,图表就会生成find,所以我知道包已加载并可供使用

有什么想法吗?

谢谢,

1 个答案:

答案 0 :(得分:7)

使用.Rnw文件(或.Rmd文件)时,请确保在脚本中包含任何library次调用(请参阅下文)。当您按下“编译PDF”按钮时,脚本中的R代码将提交给R的新实例,以防止当前环境中的任何内容弄乱结果。这可能看起来有点奇怪,但有利于再现性。因此,只要您点击“编译PDF”,就会忘记未通过您的脚本显式创建的对象以及未在脚本中显式调用的包

<<histogram, echo=FALSE, fig.align='center'>>= 
library(ggplot2)
summary(los$hosp_svc) 
summary(los$Pt_Age)

binsize = diff(range(los$Pt_Age)/30) 
ggplot(los, aes(x = Pt_Age)) + 
  geom_histogram(binwidth = binsize, 
                 fill = "red", 
                 alpha = 0.315, 
                 colour = 'black') + 
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank()) + 
  xlab("Patient Age in Years") + 
  ylab("Frequency/Count") + 
  ggtitle("Histogram of Patient Age") 
@