当我使用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中是否存在类似的东西?
答案 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