[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

From |
[email protected] (Jeff Pitblado, Stata Corp.) |

To |
[email protected] |

Subject |
Re: st: Graphing RAREA with two crossing functions |

Date |
Fri, 17 Oct 2003 15:11:07 -0500 |

Ernest Berkhout <[email protected]> asks about getting two different colored -rarea- plots from two crossing curves: > The idea seems simple, the implementation that I tried so far appears to be > not... Therefor I firstly report what I have managed to tackle myself, but > finally there are still some open ends. Anyone out there who might have a clue? > > The problem is as follows: imagine a twoway (overlayed) graph with two > lines that cross eachother (maybe more than once), for example Y = sin(x) > and Y2 = 0.2. > Now I want to shade the closed areas between these two lines. If possible, > I also want different colors for the two possibilities Y>Y2 and Y<Y2. My > first approach was to copy minimum and maximum values and then use the > -twoway rarea- approach. > > *********************************** > The example can be reproduced with: > > set obs 100 > gen x = _n/10 > gen y = sin(x) > gen y2=.2 > > *** create low/high-series for the areas where Y>Y2: > gen low1 = y2 if y > y2 > gen high1 = y if y > y2 > > *** create low/high-series for the areas where Y<Y2: > gen low2 = y if y < y2 > gen high2 = y2 if y < y2 > > twoway (line y x) (line y2 x ) (rarea low1 high1 x ) (rarea low2 high2 x ) > ******************************** > > This yields two problems: > 1. The shaded area of this graph does not extend until the exact > points of intersection, especially when there are relatively few > datapoints. The 'edges' of the area are left blank. > 2. Follows from problem 1: although the variables low1 and high1 are set to > missing when the values of Y are below Y2 (low1>high1), there is still an > area to plot for Stata, namely from the last non-missing observations to > the first non-missing observations from the next area where Y>Y2 again. > > I managed to work around most of the second problem, by setting low1 & > high1 equal to either Y or Y2 instead of missing. Then the code reads: > > gen low1 = y2 if y > y2 > gen high1 = y if y > y2 > replace low1 = y2 if low1==. > replace high1= y2 if high1==. > > But when datapoints aren't many (or when functions aren't that smooth as in > my example), problem 1 still leaves behind its marks. What is really needed > is a way to adress the graph to fill the area up untill the intersection > points (and not any further). > Does anyone have a clue? Is it possible to adress the intersection in a > continuous way, or does one manually has to compute these points and add > them (temporarily) to the data? Any opinions are welcome! Ernest almost has it. The solution is actually a little simpler: ***** BEGIN: set obs 100 gen x = _n/10 gen y = sin(x) gen y2=.2 gen low = min(y,y2) gen high = max(y,y2) twoway (rarea low y2 x ) (rarea high y2 x ) ***** END: Ernest could then control the individual line colors by specifying options to each -rarea- plot. --Jeff [email protected] * * For searches and help try: * http://www.stata.com/support/faqs/res/findit.html * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

- Prev by Date:
**Re: st: Stata 8 graphics -adding ylines on TOP of lfitci?** - Next by Date:
**st: reshaping with many variables** - Previous by thread:
**st: Re: Graphing RAREA with two crossing functions** - Next by thread:
**st: test for normality in heckman** - Index(es):

© Copyright 1996–2024 StataCorp LLC | Terms of use | Privacy | Contact us | What's new | Site index |