在 plot() 中设置背景

setting background in plot()

我正在尝试绘制 CDF 以显示与水质标准相关的水质数据。

为了使水质标准一目了然,我使用 rect() 来指示地块的哪些部分不在设定标准内。

我在 rect() 中使用密度来创建散列填充,以便在黑白打印时效果更好(我认为它看起来更好)。

当我只有一个要使用的地块区域时,这很好用 rect():

当我在图中有两个单独的 rect() 调用时,第一个 rect() 似乎忽略了密度参数并使用实心填充:

这是我用来执行此操作的代码示例:

pH值数据
data<-rnorm(30, mean = 7, sd = 1) 
pH值图
data.ecdf<-ecdf(data)
plot(data.ecdf, verticals = TRUE, do.points = FALSE, xaxs = "i", yaxs = "i", xlim=c(5,10), panel.first = rect(5, -0.02, 6, 1.04, density = 20, border = "258", col = "258"))

plot(data.ecdf, verticals = TRUE, do.points = FALSE, xaxs = "i", yaxs = "i", xlim=c(5,10), panel.first = rect(5, -0.02, 6, 1.04, density = 20, border = "258", col = "258", rect(9,-0.02,10,1.04, density = 20, border = "258", col = "258")))

我也尝试在 ggplot2 中执行此操作,但似乎获得散列填充比在图形中困难得多。

任何关于如何让两个 rect() 在后台显示散列填充 (density = 20) 的想法或想法将不胜感激。

谢谢!

不确定为什么会这样,但是您可以在 panel.first 参数中同时调用两个矩形:

plot(data.ecdf, verticals = TRUE, do.points = FALSE, xaxs = "i", yaxs = "i", xlim=c(5,10), panel.first = c(
  rect(9,-0.02,10,1.04, density = 20, border = "258", col = "258"),
  rect(5, -0.02, 6, 1.04, density = 20, border = "258", col = "258")
))

或者,尝试将矩形独立地称为图层:

plot(data.ecdf, verticals = TRUE, do.points = FALSE, xaxs = "i", yaxs = "i", xlim=c(5,10), lty='n')
rect(9,-0.02,10,1.04, density = 20, border = "258", col = "258")
rect(5, -0.02, 6, 1.04, density = 20, border = "258", col = "258")
lines(data.ecdf, verticals = TRUE, do.points = FALSE, xaxs = "i", yaxs = "i", xlim=c(5,10))