Bertolt Meyer wrote: > Dear R users, > > I still feel new to R so please apologize if I am doing something > stupid here. My use of the polygon() function produces a result that I > cannot comprehend: In a plot, I would like to shade the area below a > normal distribution. However, I do not want the entire area to be > shaded, but just the area on the right side of a vertical line that I > draw through the distribution (in order to illustrate the function of > a t-test). Here is what I do: > > scale <- 0.1 > x <- seq(-4, 6, scale) > y <- dnorm(x) > plot(x, y, type = "l", main="t-Test, t = 2.2") > > linepos <- 2.2 > abline(v = linepos) > > # I try to fill a polygon right of the vertical line: > # max(x) - linepos (in this case, 2.2) / scale (0.1) > # results in the last 38 elements of x and y. > # so I take the last 38 elements of x and y and try to > # draw a polygon underneath: > > cutpoint <- (max(x) - linepos) / scale > > xt <- x[(length(x)-cutpoint):length(x)] > yt <- y[(length(y)-cutpoint):length(y)] > > # draw the polygon > > polygon(xt, yt, density = 10 ) > > As you can see in the result, this is not what I want; some area above > the line gets shaded, but not below. Can someone tell me what I am > missing? > > Thank you very much, > Bertolt > Your polygon contains no points on the x axis (yt==0).
Try adding this: n <- length(xt) xt <- c(xt[1], xt, xt[n]) yt <- c(0,yt,0) polygon(xt, yt, col="red" ) -- O__ ---- Peter Dalgaard Ă˜ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.