Re: [R] Help with shading a polygon below a segment of a curve (normal distribution)

2008-08-28 Thread Greg Snow
The power.examp function in the TeachingDemos package (among others) may 
already do what you want.  Even if it does not, it does shade the area under a 
curve, you can look at the source for the function as an example of where to 
start.

Hope this helps,

--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
[EMAIL PROTECTED]
(801) 408-8111



> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Bertolt Meyer
> Sent: Thursday, August 28, 2008 8:03 AM
> To: r-help@r-project.org
> Subject: [R] Help with shading a polygon below a segment of a
> curve (normal distribution)
>
> 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
>
> --
> Bertolt Meyer
> Oberassistent
> Sozialpsychologie, Psychologisches Institut der Universität
> Zürich Binzmühlestr. 14, Box 15 CH-8050 Zürich
>
> [EMAIL PROTECTED]
> tel:   +41446357282
> fax:   +41446357279
> mob:   +41788966111
>
> __
> 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.
>

__
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.


Re: [R] Help with shading a polygon below a segment of a curve (normal distribution)

2008-08-28 Thread Peter Dalgaard
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.