Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Jacob Järås <jacob.jaras@sll.se> |
To | statalist@hsphsun2.harvard.edu |
Subject | st: Fw: Foreach loop for graphs: ylabel & legend box |
Date | Thu, 10 Jan 2013 17:19:25 +0100 |
Dear Stata list members, I'm experiencing certain difficulties in parts of the code below when I try to create an automated process for producing graphs. I'm trying to plot incidence and mortality for various types of cancer by icd7 for both men and women in the same graph. Altogether there are about 50 graphs. The first problem that I encounter is that when I'm making a graph of, for example, prostate cancer, the labels of women appear in the plot region. I'd like to show only the labels of men and have the labels of women removed automatically, since there isn't and line corresponding to it in the graph. Similarly, the same happens whenever there is a type of cancer that only occurs to women. The labels of men are shown in the plot region as well as the labels of women and I'd like to remove the labels of men. The second issue that I'm trying to solve has to do with the range of the values on the axis of y since the number of new cases per year depends very much on the type of cancer. I want to reserve space on the upper left corner of the plot region for the legend box, for consistency. I try to make this happen by using the "Suggest # of ticks" in "Axis properties". Apparently this doesn't work very well because it seems like whenever there is a decreasing trend, there just isn't enough space for both, the legend and the lines, at the same time, since the time series trend line start on the same area where I have the legend box. The result is that a part of the beginning of the line end up hidden behind/under the legend box. So I'd like to find a way to reserve space or a portion of the height of the graph on "ring(0) position(11)" without having any trend lines hidden below the legend box, regardless of where the line begins. If anyone have suggestions or ideas on the above it would be greatly appreciated! -------------------------------------------------------------------------------------------------------------------- levelsof icd7, local(levels) local j=2 foreach i of local levels { graph twoway (line inc year if sex==1 & filter==1 & icd7==`i', color(black) lwidth(vthin) lpattern(solid)) || /// (line inc year if sex==2 & filter==1 & icd7==`i', color(black) lwidth(medthick) lpattern(solid)) || /// (line mort year if sex==1 & filter==1 & icd7==`i', color(black) lwidth(medthin) lpattern(longdash)) || /// (line mort year if sex==2 & filter==1 & icd7==`i', color(black) lwidth(medthick) lpattern(dash)), /// legend(size(small) color(black) position(11) ring(0) cols(1) region(lcolor(white)) symxsize(10) rowgap(.3) /// label(1 "Incidence men") label(2 "Incidence women") label(3 "Mortality men") label(4 "Mortality women")) /// xlabel(1955(5)2015, labsize(small)) xtitle("Year",size(medsmall) margin(small)) /// ylabel(#12, labsize(small) format(%3.0f) angle(horizontal) grid gmin gmax /// glwidth(thin) glcolor(gs13) glpattern(longdash)) /// ytitle("per 100 000", size(medsmall) margin(small)) graphregion(color(white)) /// caption("{it:Figure `j'a: `:lab (icd7) `i''}", size(medsmall)) graph save "Path\Figure `j'a - `:lab (icd7) `i''.gph", replace local j=`j'+1 } -------------------------------------------------------------------------------------------------------------------- Thank you very much Jacob * * 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/