2016-08-24 140 views
2

我想绘制一个CDF来显示与水质标准相关的水质数据。在plot中设置背景()

为了使水质标准更加明显,我使用rect()来指示哪些部分不在设定的标准范围内。

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

这工作得很好,当我只有我想用阴谋的一个区域rect()

one_rect() in plot

当我在情节两个独立rect()调用第一rect()似乎忽略密度参数并使用实心填充:

two_rect in plot

这里是我用来做此工作的代码的一个例子:

个 数据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但似乎得到一个哈希填充比显卡要困难得多。

任何关于如何在背景中使用散列填充(density = 20)来显示rect()的想法或想法将不胜感激。

谢谢!

回答

0

不知道为什么它的发生,但你可以在一次panel.first ARG内调用两个矩形:

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)) 

enter image description here