Hi Aiste,

Thank you. It may be slow, but it is exactly what I was looking for! I'd be interested if anyone has a faster solution, but this already does the trick well. Of course there will be additional elements in the figure, but it is the coloring I was struggling with.

thanks, Roger


Aiste Aistike schreef:
Hello,
I slightly altered your code, but I hope that's what you want: l <- 1000
radius <- 3
x <- seq(-radius,radius,length=l)
y <- sqrt(radius^2-x^2)
xx <- c(x,-x)
yy <- c(y,-y)
plot(xx,yy, xlim=c(-radius,radius),ylim=c(-radius,radius), type="l", ylab="", xlab="", axes=F) radius <- 2.7
x1 <- seq(-radius,radius,length=l)
y1 <- sqrt(radius^2-x1^2)
radius <- 2.0
x2 <- seq(radius,-radius,length=l)
y2 <- sqrt(radius^2-x2^2)

for (i in 1:l){
polygon(c(x1[i],x1[i+1],x2[l-i],x2[(l+1)-i]),c(y1[i],y1[i+1],y2[l-i],y2[(l+1)-i]), col = rainbow(1, start = 0+(0.33*i)/l, end = 2/6), border=rainbow(1, start = 0+(0.33*i)/l))
}

#you can omit this line if you do not need the border:
polygon(c(x1,x2),c(y1,y2))

It's not ideal I think because for length l = 2000 it's quite slow. Maybe someone will find a much better solution. Aiste 2008/8/15 Roger Leenders <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>


    R2.7.1, WinXP

    Hi,

    I have a polygon inside a circle as follows:

    radius <- 3
    x <- seq(-radius,radius,length=2000)
    y <- sqrt(radius^2-x^2)
    xx <- c(x,-x)
    yy <- c(y,-y)
    plot(xx,yy, xlim=c(-radius,radius),ylim=c(-radius,radius),
    type="l", ylab="", xlab="", axes=F)

    radius <- 2.7
    x1 <- seq(-radius,radius,length=2000)
    y1 <- sqrt(radius^2-x1^2)
    radius <- 2.0
    x2 <- seq(radius,-radius,length=2000)
    y2 <- sqrt(radius^2-x2^2)

    polygon(c(x1,x2),c(y1,y2))

    (the graph much resembles a speed dial inside a car).
    Now I want to fill the polygon with color, such that it starts on
    the left with red and ends on the right with green, following the
    coloring of the rainbow.
    Preferably, the coloring should be "continuous", such that colors
    naturally fade into each other.
    I can draw the polygon as above, but I don't know how to do the
    coloring. It is easy to give the polygon only one color (e.g.
    through polygon(c(x1,x2),c(y1,y2), col="red")), but I need a way
    in which to color the polygon such that the color moves through
    the color spectrum from red (left) to green (right).
    Can anyone help me to achieve this?

    Thanks, Roger

    ______________________________________________
    R-help@r-project.org <mailto: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
    <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.

Reply via email to