ggplot的qplot不会在采购时执行

时间:2011-07-13 06:46:09

标签: r ggplot2 r-faq

假设我有2个源文件,第一个名为example1.r,第二个example2.r(如下所示)。

example1.r

plot(1:10,1:10)

example2.r

qplot(1:10,1:10)

当我获取example1.r时,绘制图形。但是,当我获取example2.r时,它不会。这里有什么解决方案?

(example2.r中的qplot是ggplot2的函数)

1 个答案:

答案 0 :(得分:76)

更新

  • .R文件: source的选项print.eval=TRUE将导致评估结果的打印行为,如交互式命令行中所示。
  

source("Script.R", print.eval=TRUE)

  • .Rnw文件: knitr默认情况下模拟交互式命令行wrt的行为。 print ING。请注意,knitr也可以指定为Raving包引导的Sweaving引擎。

<小时/> 这是我原来的答案。但请注意,这种解决方法现在恕我直言已经过时了(对于一个小的懒惰利基而言它总是好的。)

这是着名的FAQ 7.22: Why do lattice/trellis graphics not work?

对于像ggplot2或lattice这样的网格图形,您需要打印图形对象才能实际绘制它。

在命令行上以交互方式自动完成。在其他地方(要获取的文件,循环,函数,Sweave块)中,您需要明确打印它。

print (qplot (1 : 10, 1 : 10))

或者,您可以重新定义qplot进行打印:

qplot <- function (x, y = NULL, z = NULL, ...) {
  p <- ggplot2::qplot (x = x, y = y, z = z, ...)
  print (p)
}

(这会将轴标签更改为x和y)。

我在小插图中使用这种方法,我想完全按照交互式会话中的用户键入代码来编写代码。