在R绘图中阴影部分

11

我正在尝试在R中制作一个图表,其中一部分是灰色的,以突出显示这个区域。与其他示例不同的是,我不想给图表下面的区域上色,而是要给从一个区域开始到图形末端的区域上色。当我尝试使用rect()或polygon()时,它会遮挡我想要强调的图表。

例如:

x_mean <- c(1, 2, 3, 4)
y_mean <- c(1, 1, 1, 1)

y_max <- c(4, 4, 4, 4)
y_min <- c(-4, -4, -4, -4)


x_shade <- c(2, 3, 4)

y_max_shade <- c(4, 4, 4)
y_min_shade <- c(-4, -4, -4)

plot(x=rep(x_mean, 3), y=c(y_mean, y_max, y_min), bty='n', type="n" )
arrows(x0=x_mean, y0=y_min, x1=x_mean, y1=y_max, length=0)
points( x=x_mean, y=y_mean, pch=16)

这将在图表上绘制4条线。 我如何从第2条线到绘图结束绘制一个灰色框?


5
R绘图采用了一种笔+纸的模型,这意味着后绘制的对象会被绘制在之前对象的上面。建议先使用rect()绘制矩形,然后再绘制想要的点和线条。 - joran
2个回答

16

为了让您不仅仅只是留下评论,这里提供了一个可能的解决方案:

plot(x=rep(x_mean, 3), y=c(y_mean, y_max, y_min), bty='n', type="n" )
rect(2,-4,4,4,col = rgb(0.5,0.5,0.5,1/4))
arrows(x0=x_mean, y0=y_min, x1=x_mean, y1=y_max, length=0)
points( x=x_mean, y=y_mean, pch=16)

enter image description here

请注意,我还演示了如何在颜色规范中使用alpha混合(使用rgb)。这对于此类事情也可能有用。尝试将rect行移动到最后,并注意结果仍然看起来不错,因为填充颜色是部分透明的。

2

我发现这个答案对于R语言中的背景色填充非常好用。

一些上下文:

panel.first = rect(c(1,7), -1e6, c(3,10), 1e6, col='green', border=NA)

前两个参数c(1,7)是阴影矩形的起始值,后面的参数c(3,10)是阴影结束的位置。这将创建从1-3和7-10的阴影区域。


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