针对特定区域(基于 x 值),更改绘图的背景颜色。

15

如何为绘图更改背景颜色,仅限于特定区域?例如,从x = 2到x = 4?

附加问题:对于x和y坐标的组合,是否也可能?(例如从(1,2)到(3,4))?

非常感谢!

1个回答

20

通过略微不同于您的描述的方式考虑绘图即可实现此目标。基本上,您想在 x 轴上的所需位置之间绘制一个彩色矩形,填满整个 y 轴限制范围。可以使用 rect() 来实现这一点,并注意,在下面的示例中,我获取当前绘图的用户 (usr) 坐标以给出 y 轴的限制,我们在这些限制之外绘制以确保完整的范围包含在绘图中。

plot(1:10, 1:10, type = "n", axes = FALSE) ## no axes
lim <- par("usr")
rect(2, lim[3]-1, 4, lim[4]+1, border = "red", col = "red")
axis(1) ## add axes back
axis(2)
box()   ## and the plot frame

rect()可以通过提供坐标向量来绘制一系列的矩形,它可以轻松处理奖励的任意x,y坐标的情况,但是对于后者来说,如果你从X坐标向量和Y坐标向量开始,则更容易避免错误,如下所示:

X <- c(1,3)
Y <- c(2,4)
plot(1:10, 1:10, type = "n", axes = FALSE) ## no axes
lim <- par("usr")
rect(X[1], Y[1], X[2], Y[2], border = "red", col = "red")
axis(1) ## add axes back
axis(2)
box()   ## and the plot frame

你可以像奖励中的数据一样轻松地拥有数据:

botleft <- c(1,2)
topright <- c(3,4)
plot(1:10, 1:10, type = "n", axes = FALSE) ## no axes
lim <- par("usr")
rect(botleft[1], botleft[2], topright[1], topright[2], border = "red",
     col = "red")
axis(1) ## add axes back
axis(2)
box()   ## and the plot frame

3
您可以使用“多边形”来填充更复杂的区域。 - Carl Witthoft
3
对于一些plot方法,至少可以在panel.first中包装rect调用。 - baptiste
2
谢谢!rect()命令比polygon更直观,par('usr')技巧真是救命稻草!对于那些想使用透明颜色的人,我发现rgb(1,1,1,0.5)用于透明灰色效果非常好。 - struggleBus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接