program def onewplot *! 1.2.1 NJC 18 October 1999 * 1.1.0 NJC 27 April 1999 * 1.0.0 NJC 23 April 1999 version 6.0 syntax varlist(min=1 numeric) [if] [in] [ , Frac(real 0.8) STack /* */ by(varname) Symbol(str) Ylabel(str) L1title(str) * ] tempvar touse mark `touse' `if' `in' local noby = "`by'" == "" tokenize `varlist' local nvars : word count `varlist' if `nvars' > 1 { if "`by'" != "" { di in r /* */ "by( ) may not be combined with more than one variable" exit 198 } else { preserve local i 1 while `i' <= `nvars' { local labels "`labels' `i' ``i''" local i = `i' + 1 } tempvar data stack `varlist' if `touse', into(`data') clear label var `data' "`varlist'" tempname stlbl label def `stlbl' `labels' label val _stack `stlbl' if "`stack'" != "" { tempvar count sort _stack `data' qui by _stack `data' : gen `count' = _n - 1 su `count', meanonly qui if r(max) > 0 { replace _stack = /* */ _stack + `frac' * `count' / r(max) } } } } else { if "`by'" == "" { tempvar by gen byte `by' = 1 tempname bylbl label def `bylbl' 1 "`varlist'" label val `by' `bylbl' } else { capture confirm numeric variable `by' if _rc == 7 { tempvar by2 encode `by', gen(`by2') _crcslbl `by2' `by' local by "`by2'" } su `by' if `touse', meanonly local range "`r(min)'/`r(max)'" } if "`stack'" != "" { tempvar count bycount sort `touse' `by' `varlist' qui by `touse' `by' `varlist' : gen `count' = _n - 1 qui gen `bycount' = `by' su `count' if `touse', meanonly qui if r(max) > 0 { replace `bycount' = /* */ `bycount' + `frac' * `count' / r(max) } _crcslbl `bycount' `by' local bylab : value label `by' label val `bycount' `bylab' } } if "`symbol'" == "" { tempvar pipe gen str1 `pipe' = "|" local symbol "sy([`pipe'])" } else local symbol "sy(`symbol')" if `"`ylabel'"' == `""' { if `noby' { local ylabel "yla(1/`nvars')" } else local ylabel "yla(`range')" } else local ylabel `"yla(`ylabel')"' if `"`l1title'"' == `""' & `noby' { local l1title `"l1title(" ")"' } else local l1title `"l1title("`l1title'")"' if "`by'" != "" { if "`stack'" != "" { graph `bycount' `varlist' if `touse', /* */ `l1title' `symbol' `ylabel' `options' } else graph `by' `varlist' if `touse' , /* */ `l1title' `symbol' `ylabel' `options' } else { graph _stack `data', /* */ `l1title' `symbol' `ylabel' `options' } end