ggplot2 自定义 grob 不会扩展到绘图之外
ggplot2 custom grob will not extend outside of plot
我正在尝试使用 annotate_custom
在我的地块外创建线条以将我的轴分成多个部分。我知道 this post 问了一个类似的问题,但出于某种原因,使用负值作为线条的最小值不会将线条延伸到绘图之外。
示例代码:
library(ggplot2)
library(grid)
data("iris")
ggplot(iris, aes(x=Species, y=Petal.Width)) +
geom_bar(stat='identity')+coord_flip()+
annotation_custom(grob = linesGrob(), xmin = 2.5, xmax = 2.5, ymin = -90, ymax = 0)+
annotation_custom(grob = linesGrob(), xmin = 1.5, xmax = 1.5, ymin = -90, ymax = 0)
我得到的:
我想要的:
默认情况下,设置不允许任何图形元素裁剪到绘图区域之外。您可以通过任何 coord_*
函数(例如 coord_cartesian()
、coord_fixed()
...)关闭裁剪,因此在您的情况下,使用 coord_flip(clip="off")
允许 grobs 扩展情节中的任何地方:
ggplot(iris, aes(x=Species, y=Petal.Width)) +
geom_bar(stat='identity')+coord_flip(clip='off')+
annotation_custom(grob = linesGrob(), xmin = 2.5, xmax = 2.5, ymin = -90, ymax = 0)+
annotation_custom(grob = linesGrob(), xmin = 1.5, xmax = 1.5, ymin = -90, ymax = 0)
我正在尝试使用 annotate_custom
在我的地块外创建线条以将我的轴分成多个部分。我知道 this post 问了一个类似的问题,但出于某种原因,使用负值作为线条的最小值不会将线条延伸到绘图之外。
示例代码:
library(ggplot2)
library(grid)
data("iris")
ggplot(iris, aes(x=Species, y=Petal.Width)) +
geom_bar(stat='identity')+coord_flip()+
annotation_custom(grob = linesGrob(), xmin = 2.5, xmax = 2.5, ymin = -90, ymax = 0)+
annotation_custom(grob = linesGrob(), xmin = 1.5, xmax = 1.5, ymin = -90, ymax = 0)
我得到的:
我想要的:
默认情况下,设置不允许任何图形元素裁剪到绘图区域之外。您可以通过任何 coord_*
函数(例如 coord_cartesian()
、coord_fixed()
...)关闭裁剪,因此在您的情况下,使用 coord_flip(clip="off")
允许 grobs 扩展情节中的任何地方:
ggplot(iris, aes(x=Species, y=Petal.Width)) +
geom_bar(stat='identity')+coord_flip(clip='off')+
annotation_custom(grob = linesGrob(), xmin = 2.5, xmax = 2.5, ymin = -90, ymax = 0)+
annotation_custom(grob = linesGrob(), xmin = 1.5, xmax = 1.5, ymin = -90, ymax = 0)