【发布时间】:2018-10-30 06:28:29
【问题描述】:
我正在尝试了解如何更改 ggplot2 图表的内部结构。我开始阅读我能找到的关于ggplot_built 和ggplot_gtable 的一些资源,但我无法回答以下问题。
给定一个情节 g 和 2 geom。
g <- ggplot(iris, aes(Petal.Length, Petal.Width)) +
geom_point() +
geom_text(aes(label=Sepal.Width))
g
有没有办法深入g 对象并删除一个/多个几何图形?
我可以得到一个从g 开始的没有几何图形的情节吗?
或者只删除geom_text?
在对答案进行更彻底的测试后更新
我刚刚注意到删除 geom 会对其他 geom 的布局产生影响。作为大多数用例的默认行为和预期行为可能很棒,但我实际上需要完全相同的图表“布局”(剩余几何图形的轴和位置)。
例如,在移除一个几何图形之前:
library(dplyr)
library(ggplot2)
count(mpg, class) %>%
mutate(pct=n/sum(n)) %>%
ggplot(aes(class, pct)) +
geom_col(fill="blue") +
geom_line(group=1) +
geom_point(size=4)
删除一个几何图形后(请注意,y 轴不再从 0 开始,我猜是没有条形的线/点的默认行为):
library(dplyr)
library(ggplot2)
count(mpg, class) %>%
mutate(pct=n/sum(n)) %>%
ggplot(aes(class, pct)) +
geom_col(fill="blue") +
geom_line(group=1) +
geom_point(size=4) -> p
p$layers[[1]] <- NULL
p
有什么方法可以强制 ggplot 保持完全相同的布局?
【问题讨论】: