order()
的意思是排序后的元素原来排在第几位,跟是不是 factor 无关。比如,你的 f
用 sort()
排序后第三个元素是 a
,它在 f
中是第五个元素。
f <- c("a", "a", "d", "f", "a")
sort(f)
[1] "a" "a" "a" "d" "f"
order(f)
[1] 1 2 5 3 4
order()
的意思是排序后的元素原来排在第几位,跟是不是 factor 无关。比如,你的 f
用 sort()
排序后第三个元素是 a
,它在 f
中是第五个元素。
f <- c("a", "a", "d", "f", "a")
sort(f)
[1] "a" "a" "a" "d" "f"
order(f)
[1] 1 2 5 3 4
willdemon polygon
会默认填充它围起来的区域,所谓的“围起来”,它的终点坐标和起点坐标会直接连起来。所以你起点坐标标和终点坐标最好是(xmin,0),(xmax,0),中间使用xmin和xmax中间的横坐标以及对应的dnorm(x)
的纵坐标。不知道我解释清楚了没。
你的填充
中间使用xmin和xmax中间的横坐标以及对应的
dnorm(x)
的纵坐标。
这个是没错的,问题在于
所以你起点坐标标和终点坐标最好是(xmin,0),(xmax,0)
但是你的起点和终点分别是(xmin,y_low),(xmax,y_high)它自动连起来就是曲线上面的部分了。
修改一下你的代码,我只加了4行,标注了Jonie名字的那一块,其它的都是你的,你的不合理的我给注释掉了:
############## Plot Curve ########################
mean.plus.sig<-17+4*4.5
mean.minu.sig<-17-4*4.5
nor.data<-seq(mean.minu.sig,mean.plus.sig,length=50)
fx<-dnorm(nor.data,mean = 17,sd=4.5)
plot(nor.data,fx,type="l",xlim = c(mean.minu.sig-2,mean.plus.sig+2),
main = "Least 10% test time",xlab = "Test time x",ylab = "f(x)")
############## Add verticle and horizontal Line ###
least.ten<-qnorm(p=0.1,mean = 17,sd=4.5)
abline(h=0,col="gray")
abline(v=least.ten,lty=2)
############## Generate shadow coordinate #########
# Incorrect, because the x coordinate generated by `nor.data[nor.data<=least.ten]` is much less than the real value "least.ten", and there would be a gap between shadow and verticle line.
# You can decrease the gap distance by change the legnth parameter at the 4th line above from 50 to a larger value
# But it is not correct also.
# fx.ten<-dnorm(least.ten,mean=17,sd=4.5) # This is not used by you
# least.data<-nor.data[nor.data<=least.ten]
# least.fx<-dnorm(least.data,mean = 17,sd=4.5)
###########Jonie: Generate x coordinate from minimum x to the verticle line ####
least.data <- seq(mean.minu.sig, least.ten, length = 50)
least.fx <- dnorm(least.data, mean = 17, sd = 4.5)
least.data <- c(min(least.data),least.data,max(least.data))
least.fx<-c(0,least.fx,0)
###########################################################################
polygon(x=least.data,y=least.fx,border=NA,col="gray")