Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
st: RE: Re: use loop to add plots to scatter plot
From
"Harris, Linda J" <[email protected]>
To
"[email protected]" <[email protected]>
Subject
st: RE: Re: use loop to add plots to scatter plot
Date
Sun, 24 Mar 2013 04:34:30 +0000
Thanks Joseph. I'll give this a try on Monday.
Linda
________________________________________
From: [email protected] [[email protected]] on behalf of Joseph Coveney [[email protected]]
Sent: Saturday, March 23, 2013 8:40 PM
To: [email protected]
Subject: st: Re: use loop to add plots to scatter plot
Linda J Harris wrote:
I have macros with names `antigen01' to `antigen40'
I want to create a two way graph with the following:
1) scatter plots with a variable # of these items (approx 5 and not in numeric
order), each with a different marker
2) linear fits for the same items, with lines in the same color as the markers
3) a linear fit that is based on the aggregate selection of items following to
a selection of these antigens (say approx 5):
If possible, I would like to use a loop with a foreach statement rather than
having to modify the specific items and # of items each time i ran this.
I know that the last line is wrong - just have no idea how to accomplish this
This is my first posting - hope I've done it right! I'm also new to Stata
programming, so hope this isn't too trivial a question.
example - say want `antigen01', `antigen04' `antigen05'
twoway ///
(scatter yvar xvar if ANTIGEN==`antigen01', mcolor(red)) ///
(lfit yvar xvar if ANTIGEN==`antigen01', lcolor (red)) ///
(scatter yvar xvar if ANTIGEN==`antigen04', mcolor(green)) ///
(lfit yvar xvar if ANTIGEN==`antigen04'), lcolor(green) ///
(scatter yvar xvar if ANTIGEN==`antigen05', mcolor(blue)) ///
(lfit yvar xvar if ANTIGEN==`antigen05', lcolor(blue)) ///
(lift yvar xvar if ANTIGEN oneof [`antigen01' `antigen04' `antigen5'],
lcolor(black))
--------------------------------------------------------------------------------
If I understand what you're trying to do correctly, then you'll probably want to
write a little ditty ado-file to call with your desired list of antigens as the
argument. Something like that below. It will create the bunch of
individual-antigen scatterplots and line-fit plots and the pooled-data line-fit
plot and leave them all behind in memory, each with a unique name that you can
then refer to them by.
Usage would be something like:
graphem my_antigen40 my_antigen2 my_antigen35
<do what you want to do with the graphs>
graphem my_antigen2 my_antigen5 my_antigen18 my_antigen29
<do what you want to do with the graphs>
and so on.
Joseph Coveney
program define graphem
version <insert your Stata version here>
syntax varlist
local color_list red green blue // fill out with your preferences
local graph_nr 1
foreach antigen of varlist `varlist' {
// Pick color in sequence of color list
local marker_color : word `graph_nr' of `color_list'
// Make individual-antigen scatterplot
graph twoway scatter yvar xvar if ANTIGEN == `antigen', ///
mcolor(`marker_color') name("`antigen'_scatter")
// Make plot of individual-antigen linear regression fit
graph twoway lfit yvar xvar if ANTIGEN == `antigen', ///
lcolor(`marker_color') name("`antigen'_linear_fit")
// Concatenate list for "aggregate selection of items"
local aggregate_antigens `aggregate_antigens' `antigen'
// Next set of individual-antigen graphs
local ++graph_nr
}
// Plot for pooled-data linear regression fit
local pooled_fit : subinstr local aggregate_antigens " ", "_", all
local aggregate_antigens : subinstr local aggregate_antigens " ", ", ", all
graph twoway lfit yvar xvar if inlist(ANTIGEN, `aggregate_antigens'), ///
lcolor(black) name("`pooled_fit'")
end
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/faqs/resources/statalist-faq/
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/faqs/resources/statalist-faq/
* http://www.ats.ucla.edu/stat/stata/