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: Re: st: plot yline for different values on each sub plot


From   Timothy Colbourn <t.colbourn@ich.ucl.ac.uk>
To   Statalist <statalist@hsphsun2.harvard.edu>
Subject   Re: Re: st: plot yline for different values on each sub plot
Date   Tue, 19 Apr 2011 11:28:06 +0200

Thanks Nick,

This method (plotting several twoway graphs at one - some bar and one a line) works well. For those interested my new code is:

twoway (bar livebirth month, barw(0.4)) (bar stillbirth month, barw(0.4)) (bar nnd month, barw(0.4)) ///
	(bar mvital month, barw(0.4)) (line expbirths month, lcolor(red)), ///
	ylabel(0(50)350, labsize(small) angle(0)) ytitle("frequency") xlabel(569(2)611, labsize(vsmall) angle(90)) ///
	xtitle("Month") by(, title("Births and deaths in each RCT arm", size(small)) note("")) ///
	legend(order(1 "Livebirths" 2 "Stillbirths" 3 "Neonatal Deaths" 4 "Maternal Deaths" 5 "Expected Births") size(vsmall)) by(arm)

The only issue is that instead of the 4 bars for each of the different bar variables (livebirth, stillbirth, nnd and mvital) being plotted beside each other for each month they are plotted on top of each other. Although I think I may remove stillbirth, nnd and mvital from these graphs anyway as they are small numbers, so it is not an issue for me at this time..

Cheers,
Tim
__________________________________

Tim Colbourn
Research Fellow and part-time PhD student,
Centre for International Health and Development,
UCL Institute of Child Health,
30 Guilford Street,
London 
WC1N 1EH

t.colbourn@ich.ucl.ac.uk

based full-time in Malawi
Tel: Office: +265 1 758 476
       Mobile: +265 888 159 231


> Date: Fri, 15 Apr 2011 11:57:32 +0100
> From: Nick Cox <njcoxstata@gmail.com>
> Subject: Re: st: plot yline for different values on each sub plot
> 
> I couldn't get the editing approach to work. That just means what it
> says: I am not at all familiar with all that the Graph Editor can so.
> 
> This code indicates some technique that might help. Most of it just
> sets up an example. The key idea is that a different horizontal line
> can be drawn for a variable that is constant in each panel. It is not
> a -yline()- and is drawn only over the range of the data.
> 
> sysuse auto, clear
> contract foreign rep78, zero
> graph bar (asis) _freq , over(rep78) by(foreign)
> egen mean = mean(_freq), by(foreign)
> twoway bar  _freq rep78, barw(0.5) xla(1/5) || line mean rep78, by(foreign)
> 
> On Fri, Apr 15, 2011 at 10:16 AM, Nick Cox <njcoxstata@gmail.com> wrote:
>> I don't know an easy way of doing this. You might try plotting all
>> four lines in all panels and then deleting three you don't need in the
>> Editor. Or you might draw each graph separately and then use -graph
>> combine-. Or you might rewrite using -twoway bar-.
>> 
>> Either way, your macro manipulation is not going to work as you
>> intend. Stata interprets your
>> 
>> `=    '
>> 
>> stuff precisely once and _before_ the -graph- command gets to work. It
>> certainly does not do that separately for each separate graph, and it
>> will always interpret a reference to a variable as a reference to its
>> value in the first observation.
>> 
>> Of course, wanting a different yline in each panel is a perfectly
>> reasonable request, but I think you will need to do it in one of the
>> ways mentioned above.
>> 
>> Nick
>> 
>> On Fri, Apr 15, 2011 at 9:56 AM, Timothy Colbourn
>> <t.colbourn@ich.ucl.ac.uk> wrote:
>> 
>>> I have a bar graph plotted 4 times in one for each different arm of the trial I am analysing: by(arm)
>>> 
>>> I have ploted a yline showing the expected number of births in each arm: yline(`=expbirths') which is a reference against the observed births bars plotted for each month (x axis). The problem is that Stata plots the yline on each of the 4 sub plots at the same value - the value for the first sub plot (arm) - rather than at the value for each arm on each subplot. I have tried yline(`=expbirths by(arm)')  but it does the same thing (with no error message - i.e. it essentially ignores the by(arm). The full syntax for the graph is:
>>> 
>>> graph bar (asis) livebirth stillbirth nnd mvital, over(month, label( labsize(vsmall) angle(90))) ///
>>>        ylabel(0(50)550, labsize(small) angle(0)) yline(`=expbirths (arm)') ytitle("frequency") ///
>>>        by(, title("Births and deaths in each RCT arm", size(small)) note("")) ///
>>>        legend(order(1 "Livebirths" 2 "Stillbirths" 3 "Neonatal Deaths" 4 "Maternal Deaths") size(vsmall)) by(arm)
>>> 
>>> Is it possible to plot the yline for each value of expbirths on each subplot?
> 









*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


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