在ggplot2中的qplot()和ggplot()之间进行选择


98

我开始使用很棒的ggplot2程序包在R中进行绘图,而在每次绘图之前我问自己的第一件事就是“好吧,我会使用qplot还是ggplot?”。

我了解这qplot提供了一种更简单的语法,同时又提供了ggplot最大的功能和灵活性,但是您最常使用的功能是什么,每个功能都有确切的用例吗?您主要使用qplotggplot仅用于复杂地块,还是ggplot每次都使用?

感谢您的反馈意见 !

Answers:


81

对于我来说,如果qplot和ggplot都可用,则标准取决于数据是存储在data.frame中还是单独的变量中。

x<-1:10
y<-rnorm(10)

qplot(x,y, geom="line") # I will use this
ggplot(data.frame(x,y), aes(x,y)) + geom_line() # verbose

d <- data.frame(x, y)

qplot(x, y, data=d, geom="line") 
ggplot(d, aes(x,y)) + geom_line() # I will use this

当然,更复杂的图需要ggplot(),而且我通常将数据存储在data.frame中,因此根据我的经验,我很少使用qplot。

总是使用ggplot()听起来不错。尽管qplot可以节省键入内容,但您会损失很多功能。


2
接受,即使每个答案都有用,谢谢大家!
juba 2011年

好问题,好答案。
d8aninja'3

一流的答案的确感谢您
Homam Bahrani 2015年

17

我是R的新手,但只是想分享一下。

 a <- c(1,2,3)

 b <- c(2,3,4)

 x <- qplot(a,b)

 y <- ggplot(data.frame(a,b), aes(a,b)) +geom_line()

如果我更改变量a和b的值,然后绘制x,它将考虑更改的值,而y则不会。因此,在编写脚本时,最好使用ggplot,就像使用qplot一样,所有图形都将等于最新提供的对qplot的引用。


11

我认为这取决于您打算使用ggplot2的频率和目的。

我主要将ggplot2用于出版物中的图形。这意味着我倾向于需要更高级的功能,因此我从不费心去学习qplot。另外,由于我每年大约有四本出版物,因此我使用ggplot2的程度不足以使它真正适应语法,因此专注于一个方面似乎是最佳选择。

但是,如果您每周获取新的数据集,那么您可能会对快速浏览数据集生成高质量的图感兴趣。在这种情况下,请同时学习两者。您将获得足够的语法练习,并且(最终)可以节省时间qplot


8

朱巴,我发现可以将qplot用于大多数基本绘图需求。它足够简单,并且默认值相当合理,我让我的本科生专门使用它,他们可以在经验有限的情况下制作出色的地块。而且,可以通过ggplot2提供的任何完整命令来修改qplot [p <-qplot(etc)]创建的图,这很方便(无论如何创建,它们都以相同的方式存储)。因此,我个人将qplot用于大多数内容,并将ggplot保存在函数内部。


5
  • 如果要处理输入向量,则qplot是最简单的选择
  • ggplot需要一个data.frame作为输入数据结构。

当您想要生成直方图时,qplot仅需要出现的向量

#rnorm 
x <- rnorm(10)

#ggplot2 package: qplot
qplot(x, geom="histogram")

#ggplot2: using straight ggplot (requires conversion to data.frame)
ggplot(data.frame(x), aes(x)) + geom_histogram()

3

我的另一种变形:qplot当我直接在控制台中键入内容ggplot时以及编写脚本时使用。但是一遍又一遍地发现我想重新创建15分钟前在控制台中键入的图之后,现在我几乎将所有图都写入脚本中-因此我几乎所有时间都使用ggplot。

(有趣的是看到答案的多样性!)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.