Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Twoway graph with different scaled y axes


From   Nick Cox <njcoxstata@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Twoway graph with different scaled y axes
Date   Tue, 19 Mar 2013 21:39:38 +0000

You should forget about -graph bar- and move to -twoway-.

Here's an example:

clear

input age1 age2 str1 gender cases rate
15 20   F             10000     5.3
20 25       F         15000     8.3
25 30       F         12000     6.5
15 20   M             18000     9.3
20 25       M         12000     5.3
25 30       M           8000     2.5
end

gen rate2 = rate * 1000
gen x = (age1 + age2) / 2 + cond(gender == "F", 1, -1)

twoway bar cases x if gender == "F", barw(2) bcolor(pink*0.5) || ///
bar cases x if gender == "M", barw(2) bcolor(blue*0.5) || ///
connected rate2 x if gender == "F", mcolor(pink*0.5) lcolor(pink*0.5) || ///
connected rate2 x if gender == "M", mcolor(blue*0.5) lcolor(blue*0.5) ///
yaxis(1 2) yla(0 2000 "2" 4000 "4" 6000 "6" 8000 "8" 10000 "10", axis(1)) ///
xtitle(age) xla(17.5 "15-20" 22.5 "20-25" 27.5 "25-30") legend(off) ///
ytitle(rate, axis(1)) ytitle(cases, axis(2))

NB: the boundaries 20, 25, etc. are ambiguous.

Nick


On Tue, Mar 19, 2013 at 9:24 PM, Maria Ana Vitorino <vitorino@umn.edu> wrote:
> Dear Statalist members,
>
> I'm trying to do 2 graphs on the same figure but am having trouble with twoway.
>
> Here is a sample of my data:
>
> agegroup        gender   cases   rateper1000
> 15-20   F             10000     5.3
> 20-25       F         15000     8.3
> 25-30       F         12000     6.5
> 15-20   M             18000     9.3
> 20-25       M         12000     5.3
> 25-30       M           8000     2.5
>
> I would like to have both figures in the same plot:
>
> 1) graph bar cases,  over(gender, label(labsize(small))) asyvars over(agegroup, label(labsize(vsmall))) ytitle("Number of Cases") b1title("Age")
>
> AND
>
> 2) a graph that has the variable rateper1000 on another axis and that shows (with dots) the rate per agegroup and age and connects those dots.
>
> The figure at http://www.cancerresearchuk.org/cancer-info/cancerstats/incidence/age/#Cancer
> depicts well what I am trying to achieve.
*
*   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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index