有没有" geom_donothing" ggplot中的函数?

时间:2018-05-19 00:46:56

标签: r ggplot2

当我使用ggplot时,我通常会格式化我的代码:

ggplot() +
   geom_col() +
   geom_line() +
   scale_y_continuous()

这种格式巧妙地组织了绘图的组件,而RStudio允许您通过点击Ctrl+Enter来运行所有行。如果我想要移除绘图的一个组件,我可以简单地注释掉该行,并且RStudio将忽略该行。

但如果我在最后一行发表评论,

ggplot() +
   geom_col() +
   geom_line() +
   #scale_y_continuous()

我会收到错误,因为我在+之后没有移除geom_line()。显然很容易删除+符号,但是当我取消注释最后一行时,我将其添加回来。

这不是一个大问题,但在制作情节的过程中,我不可避免地忘记添加或删除+至少一次。在使用小屏幕的笔记本电脑上工作时,这是一个更大的问题,我不一定能看到最后一行的结束。

ggplot中是否有一个函数,我可以在最后一行下面添加,这将被读取但是什么也不做,阻止我处理+个符号?

例如,Python具有pass语句,在编写代码时充当填充符。 ggplot中是否存在类似的东西?

3 个答案:

答案 0 :(得分:1)

您有两个选择

一个。 geom_blank()

gp <- gp +

gp <- gp +解决方案是我的个人建议。它允许简单地添加和删除ggplot组件,并且副产品为您提供了gp gglpot结构,您可以通过RStudio进行interogate:

gp <- ggplot()
gp <- gp + geom_col() 
gp <- gp + geom_line() 
# gp <- gp + scale_y_continuous()
gp

这实现了与行+的结尾相同的结果,而没有多余的多余函数调用。作为替代方案,如果您有更新的代码库,则可以考虑使用geom_blank(),然后后者geom_blank()可能是更容易的选择。 (这假设你仍在调试或调整你的情节)

ggplot() +
geom_col() +
geom_line() +
# scale_y_continuous() +
geom_blank()

我的感觉是这是一个美学问题。我不喜欢尾随+因为有可能掉到其他代码(线路溢出)。这种情况可能会产生有趣且笨拙的调试情况。

答案 1 :(得分:1)

ggplot() + theme()

ggplot() + list()

ggplot() + invisible(list())

什么都不做,不添加图层。如果单独执行,最后一个也不会打印任何内容。

答案 2 :(得分:0)

一个更安全的选择是使用NULL。这实际上不执行任何操作,而geom_blank()添加了一层。 ggplot链后使用NULL就是deliberate design feature


library('ggplot2')

plot0 = ggplot(iris) +
  geom_point(aes(x=Sepal.Width, y=Sepal.Length, colour=Species))

plot1 = ggplot(iris) +
  geom_point(aes(x=Sepal.Width, y=Sepal.Length, colour=Species))+
#  scale_y_continuous()+
  NULL

plot2 = 
  ggplot(iris) +
  geom_point(aes(x=Sepal.Width, y=Sepal.Length, colour=Species))+
#  scale_y_continuous()+
  geom_blank()


length(plot0$layers)
#> [1] 1

length(plot1$layers)
#> [1] 1

length(plot2$layers)
#> [1] 2

object.size(plot0) < object.size(plot1)
#> [1] FALSE

object.size(plot0) < object.size(plot2)
#> [1] TRUE