[R] shading in overlap between two ranges
Rolf Turner
rolf.turner at xtra.co.nz
Thu Jun 2 22:57:53 CEST 2011
(1) For crying out loud don't muck about with par(new=TRUE)
like that. Use points() and lines() (and other plot functions) to
add graphical constructs to existing plots. (And use "TRUE"
not "T" --- it's a lot safer.)
(2) In general for shading in regions between two lines
on a plot, use polygon().
cheers,
Rolf Turner
On 03/06/11 03:04, Graves, Gregory wrote:
> I have 2 datafiles 'target' and 'observed' as shown below (I will gladly
> email these 2 small files to whomever). X25. And X75. Indicate the
> value of 25th and 75th-percentile of the target ('what should be') and
> the observed ('what is'). The i.value is simply the month.
>
>> target
> X i.value X25. X75.
> 1 one.month 1 10.845225 17.87237
> 2 one.month 2 12.235813 19.74490
> 3 one.month 3 14.611749 23.44810
> 4 one.month 4 17.529332 28.09647
> 5 one.month 5 19.458738 30.56936
> 6 one.month 6 15.264505 28.29333
> 7 one.month 7 12.370369 23.35455
> 8 one.month 8 12.471224 21.82794
> 9 one.month 9 9.716685 17.28762
> 10 one.month 10 6.470568 12.49830
> 11 one.month 11 6.180560 14.24961
> 12 one.month 12 9.673738 15.79208
>
>> observed
> X i.value X25. X75.
> 1 one.month 1 19.81000 27.63500
> 2 one.month 2 23.64062 30.09125
> 3 one.month 3 26.04865 35.99104
> 4 one.month 4 32.02625 41.50958
> 5 one.month 5 34.74479 47.75958
> 6 one.month 6 37.48885 46.56448
> 7 one.month 7 30.06740 40.10146
> 8 one.month 8 26.14917 39.49458
> 9 one.month 9 14.12521 32.39406
> 10 one.month 10 11.04125 23.55479
> 11 one.month 11 13.14917 23.56833
> 12 one.month 12 17.17938 27.02458
>
> The following plots 4 lines on one graph. The area between the two red
> lines represents the target 'zone', and the area between the two black
> lines is the observed 'zone'.
>
> with(target, plot(X25.~i.value,ylim=c(0,55),type='l',col='red'))
> par(new=T)
> with(target, plot(X75.~i.value,ylim=c(0,55),type='l',col='red'))
> par(new=T)
> with(observed, plot(X25.~i.value,ylim=c(0,55),type='l'))
> par(new=T)
> with(observed, plot(X75.~i.value,ylim=c(0,55),type='l'))
> par(new=F)
>
> Ideally, the target and the observed should overlap in every month -
> they don't. The desire is to visually accentuate the amount of overlap
> by shading in the area where these two "zones" overlap. How would you
> do that? Note, that in some of these characterizations, the overlap
> wanders in and out [I already have routines that calculate the percent
> of overlap, but I have been requested to find a way to shade the
> overlap.]
>
> ______________________________________________
> R-help at 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.
>
More information about the R-help
mailing list