2016-03-02 87 views
0

我有R中的下列数据和代码:在具有不同颜色的上述阈值的限制 - [R绘图线

x <- runif(1000, -9.99, 9.99) 
mx <- mean(x) 
stdevs_3 <- mx + c(-3, +3) * sd(x/5) # Statndard Deviation 3-sigma 

我绘制成线(地连同3个标准偏差和平均线)中的R:

plot(x, t="l", main="Plot of Data", ylab="X", xlab="") 
abline(h=mx, col="red", lwd=2) 
abline(h=stdevs_3, lwd=2, col="blue") 

Line Plot with mean and SD lines

我想要做什么:

图中的任何地方,无论何时线路穿越3西格马阈值(蓝线),在其上方或下方,线条应与黑色不同。

我想这一点,但没有奏效:

plot(x, type="l", col= ifelse(x < stdevs_3[[1]],"red", "black")) 
abline(h=mx, col="red", lwd=2) 
abline(h=stdevs_3, lwd=2, col="blue") 

有没有其他办法?

+0

这似乎统计学语无伦次。这个表达从何而来? 'sd(x/5)' –

+0

我完成了它,我知道这是不好的,但是要在随机生成的数据上显示阴谋。我有数据是保密的,因为我使用了sd(x),而不是像上面显示的那样。对困惑感到抱歉。 –

回答

0

这是要求什么,但因为5×的任意分割的出现毫无意义的对我说:

png() 
plot(NA, xlim=c(0,length(x)), ylim=range(x), main="Plot of Data", ylab="X", xlab="",) 
stdevs_3 <- mx + c(-3, +3) * sd(x/5) 
abline(h=mx, col="red", lwd=2) 
abline(h=stdevs_3, lwd=2, col="blue") 
segments(0:999, head(x,-1), 1:1000, tail(x,-1) , col=c("black", "red")[ 
             1+(abs(tail(x,-1)) > mx+3*sd(x/5))]) 
dev.off() 

enter image description here

+0

实际上,x被3除以便将3偏差线带入这张图片。我有其他数据是保密的,不能在任何公共网站上显示。对于这种困惑感到抱歉。但是,嘿!,不错的尝试。尽管在3个西格玛边界内线条显然是红色的。所有我需要的,只有当它在3个西格玛线(顶部或底部)之外时,即在+3之外和在Y轴上-3个点之外的任何红色线。 –

+0

我无法分辨您的期望是如何为“线条”着色。目前,它正在着色通过使端点位于外部而跨越这些边界的片段,但片段的颜色可能会延伸到中间片段。由于我没有得到任何声明,表明这个问题是需要的,也没有得到满意答复,所以我仍然不确定问题是否得到解答。 –

+1

我有一个更好的主意。在数据框中,当数据点与3-sigma级别(上面和下面)进行比较时,我将计算异常值(是或否),并根据异常值设置颜色参数。 –

相关问题