[R] creating a color gradient in geom_ribbon

Ulrik Stervbo ulrik.stervbo at gmail.com
Thu May 11 07:51:12 CEST 2017


I haven't tested it  but the first thing I'd look at is scale_fill_gradient.

HTH


Ulrik

Jim Lemon <drjimlemon at gmail.com> schrieb am Do., 11. Mai 2017, 07:22:

> Hi Kristi,
> It can be done, but it is messy:
>
> pl = data.frame(Time = 0:10, menle = rnorm(11))
> pl$menlelb = pl$menle -1
> pl$menleub = pl$menle +1
> rg<-0.95
> blue<-1
> plot(pl$Time,pl$menlelb,ylim=range(c(pl$menlelb,pl$menleub)),type="l",
>  lwd=7,col=rgb(rg,rg,blue))
> lines(pl$Time,pl$menlelb,lwd=7,col=rgb(rg,rg,blue))
> rg<-seq(0.9,0.3,length.out=9)
> offset<-seq(0.88,0.08,by=-0.1)
> for(i in 1:9) {
>  lines(pl$Time,pl$menle+offset[i],lwd=7,col=rgb(rg[i],rg[i],blue))
>  lines(pl$Time,pl$menle-offset[i],lwd=7,col=rgb(rg[i],rg[i],blue))
> }
> lines(pl$Time,pl$menle,lwd=6,col=rgb(0,0,blue))
>
> For the ggplot solution, this might work:
>
> ggplot(pl, aes(Time)) +
>   geom_line(aes(y=menle+1), colour=rgb(0.95,0.95,1), width=7) +
>   geom_line(aes(y=menle-1), colour=rgb(0.95,0.95,1), width=7) +
>   geom_line(aes(y=menle+0.88), colour=rgb(0.9,0.9,1), width=7) +
>   geom_line(aes(y=menle-0.88), colour=rgb(0.9,0.9,1), width=7) +
>   geom_line(aes(y=menle+0.78), colour=rgb(0.825,0.825,1), width=7) +
>   geom_line(aes(y=menle-0.78), colour=rgb(0.825,0.825,1), width=7) +
>   geom_line(aes(y=menle+68), colour=rgb(0.75,0.75,1), width=7) +
>   geom_line(aes(y=menle-68), colour=rgb(0.75,0.75,1), width=7) +
>   geom_line(aes(y=menle+0.58), colour=rgb(0.675,0.675,1), width=7) +
>   geom_line(aes(y=menle-0.58), colour=rgb(0.675,0.675,1), width=7) +
>   geom_line(aes(y=menle+0.48), colour=rgb(0.6,0.6,1), width=7) +
>   geom_line(aes(y=menle-0.48), colour=rgb(0.6,0.6,1), width=7) +
>   geom_line(aes(y=menle+0.38), colour=rgb(0.525,0.525,1), width=7) +
>   geom_line(aes(y=menle-0.38), colour=rgb(0.525,0.525,1), width=7) +
>   geom_line(aes(y=menle+0.28), colour=rgb(0.45,0.45,1), width=7) +
>   geom_line(aes(y=menle-0.28), colour=rgb(0.45,0.45,1), width=7) +
>   geom_line(aes(y=menle+0.18), colour=rgb(0.375,0.375,1), width=7) +
>   geom_line(aes(y=menle-0.18), colour=rgb(0.375,0.375,1), width=7) +
>   geom_line(aes(y=menle+0.08), colour=rgb(0.3,0.3,1), width=7) +
>   geom_line(aes(y=menle-0.08), colour=rgb(0.3,0.3,1), width=7) +
>   geom_line(aes(y=menle), colour="blue") )
>
> but I can't test it.
>
> Jim
>
> On Thu, May 11, 2017 at 6:05 AM, Kristi Glover
> <kristi.glover at hotmail.com> wrote:
> > Hi R Users,
> >
> > I was trying to create a figure with geom_ribbon. There is a function
> "fill", but I want to make the shaded area with a gradient (increasing dark
> color towards a central line, inserted of having a color). Is there any
> possibility?
> >
> >
> > In the given example, I want the colour with "blue" but in a gradient
> (dark=central, light= as goes higher or lower)
> >
> >
> > pl = data.frame(Time = 0:10, menle = rnorm(11))
> >
> > pl$menlelb = pl$menle -1
> >
> > pl$menleub = pl$menle +1
> >
> > ggplot(pl, aes(Time)) +
> >
> >   geom_line(aes(y=menle), colour="blue") +
> >
> >   geom_ribbon(aes(ymin=menlelb, ymax=menleub), fill="blue")
> >
> >
> > Thanks
> >
> >         [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > 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 at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list