【发布时间】:2017-07-17 15:07:19
【问题描述】:
假设我有这样的情节:
# Load libraries
library(ggplot2)
library(grid)
# Load data
data(mtcars)
# Plot results
p <- ggplot(data = mtcars)
p <- p + geom_bar(aes(cyl))
p <- p + coord_flip()
p <- p + facet_wrap(~am)
print(p)
现在,我想在条形所在的两个方面一直绘制线条。我添加这个:
p <- p + geom_vline(aes(xintercept = cyl))
添加线条,但它们不会跨越两个方面。因此,我尝试使用此解决方案关闭剪辑:
# Turn off clipping
gt <- ggplot_gtable(ggplot_build(p))
gt$layout$clip[gt$layout$name == "panel"] <- "off"
# Plot results
grid.draw(gt)
但这并不能解决问题:线条仍然被剪裁。所以,我想知道这是否特定于geom_vline,并尝试了geom_abline 和geom_line(后者的值跨越±Inf)的方法,但结果是相同的。在其他帖子中,剪切解决方案似乎适用于文本和点,但大概在这种情况下,线条仅在图形的范围内定义。 (我什至尝试gt$layout$clip <- "off" 关闭所有可能的剪辑,但这并没有解决问题。)有解决方法吗?
【问题讨论】:
-
this answer 能满足您的需求吗?
-
看起来确实像。谢谢!显然我今天的谷歌赋特别弱……
-
实际上,该代码似乎不适用于我(或其他几个小时前发布的人)。其他人能成功运行吗?
标签: r ggplot2 facet-wrap