ggplot2 - 两条垂直线之间的阴影区域

P H*_*P H 31 r ggplot2

ggplot2用来创建一些相当简单的散点图.我目前使用两条简单的垂直线:

... + geom_vline(xintercept=159684.186,linetype="dotted",size=0.6)+
geom_vline(xintercept=159683.438,linetype="dotted",size=0.6)+ ...
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何遮蔽从Y轴顶部到X轴这两条线之间的区域?

Bri*_*ggs 48

你可以用geom_rect.

... + geom_rect(aes(xmin=159683.438, xmax=159684.186, ymin=0, ymax=Inf))
Run Code Online (Sandbox Code Playgroud)

x的两个值来自您的geom_vline调用.使用ymin=0将其降至0; ymax=Inf将它一直带到轴的顶部.如果您希望它一直向下到x轴而不是0,您可以使用ymin=-Inf.

一些说明:

如果它早在geoms的顺序,那么它最好在它的第一个/下面绘制(特别是散点图数据).

您可以将调用fill之外的填充颜色(美学)aes设置为固定值.我还将透明度(alpha)设置为0.5,以便它背后的东西(网格线,很可能,如果你把它作为第一个geom)仍然可以看到.


Jam*_*mes 20

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)
Run Code Online (Sandbox Code Playgroud)

我知道这基本上是一回事; 我刚从这里偶然发现了这个故事.

  • 我非常喜欢这种方法,因为它允许我拥有颜色和大小比例。 (3认同)