我希望通过在ggplot2
中填充(透明)颜色的某些x1到x2的完整区域来标记绘图的某些部分。
使用基数R我会做类似的事情:
plot(1:100)
polygon(x = c(0, 25, 25, 0), y = c(-1000, -1000, 1000, 1000), col = "#FF000050")
当对ggplot2
做同样的事情时,我遇到的问题是,多边形要么没有进入绘图的上边缘,要么根本不绘制,如果我限制y轴则根本不绘制与ylim
。
ggplot(data = data.frame(x = 1:100, y = 1:100), aes(x = x, y = y)) +
geom_point() +
#ylim(0, 100) +
geom_polygon(data = data.frame(x = c(0, 25, 25, 0), y = c(-1000, -1000, 1000, 1000)), aes(x = x, y = y), color = "red", fill = "red", alpha = 0.1)
我不想将解决方案限制为geom_polygon
,也许有更好的方法来标记这部分情节。在我的真实世界数据图中,我使用geom_bar
作为堆积条形图,但我认为解决方案不依赖于此。
答案 0 :(得分:3)
您可以使用-Inf
和+Inf
来定义polygon
的限制(或者更好,在这种情况下为rect
)。
ggplot2
会忽略它们来构建情节限制:
ggplot() +
geom_point(data = data.frame(x = 1:100, y = 1:100), aes(x = x, y = y)) +
geom_polygon(data = data.frame(x = c(0, 25, 25, 0), y = c(-Inf, -Inf, Inf, Inf)), aes(x = x, y = y), color = "red", fill = "red", alpha = 0.1) +
geom_rect(aes(xmin = 30, xmax = 35, ymin = -Inf, ymax = Inf), color = 'green', fill = "green", alpha = .1)
请注意,我已将ggplot
调用的数据分配移至geom_point
。更好地解释了in this question的动机。
答案 1 :(得分:1)
试试这个:
ggplot(data = data.frame(x = 1:100, y = 1:100), aes(x = x, y = y)) +
geom_rect(aes(xmin = 0, xmax = 25, ymin = 0, ymax = 100), fill = "red", alpha = 0.01)+
geom_point()+
scale_y_continuous(limits = c(0, 100), expand = c(0, 0))