我正在使用ggplot2
来创建一些相当简单的散点图。我目前使用两条简单的垂直线:
... + geom_vline(xintercept=159684.186,linetype="dotted",size=0.6)+
geom_vline(xintercept=159683.438,linetype="dotted",size=0.6)+ ...
有谁能告诉我如何遮蔽从Y轴顶部到X轴的这两条线之间的区域?
答案 0 :(得分:45)
您可以使用geom_rect
。
... + geom_rect(aes(xmin=159683.438, xmax=159684.186, ymin=0, ymax=Inf))
x的两个值来自geom_vline
次来电。使用ymin=0
将其降为0; ymax=Inf
将一直带到轴的顶部。如果您希望它一直向下到x轴而不是0,您可以使用ymin=-Inf
。
一些注意事项:
如果它早于geoms的顺序,那么它的效果最好,以便它首先/低于其他部分(尤其是散点图数据)。
您可以将fill
调用之外的填充颜色(aes
美学)设置为固定值。我还要将透明度(alpha
)设置为0.5,这样它背后的东西(网格线,很可能,如果你把它作为第一个geom)仍然可以看到。
答案 1 :(得分:18)
如果您知道要遮挡的区域的坐标,则可能更容易使用annotate()
。当我尝试使用geom_rect()
时,我遇到了一些奇怪的渲染问题。
library(ggplot2)
data(mtcars)
ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() +
annotate("rect", xmin = 3, xmax = 4.2, ymin = 12, ymax = 21,
alpha = .2)
我知道它本质上是一样的;我刚从here偶然发现了这个小故事。