Bookmark and Share

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]

RE: st: RE: RE: yrescale cancels yscale(range()) in graphs by a categorical variable


From   Toby Robertson <[email protected]>
To   <[email protected]>
Subject   RE: st: RE: RE: yrescale cancels yscale(range()) in graphs by a categorical variable
Date   Thu, 21 Jun 2012 16:22:09 +0000

Thank you as ever Nick. I would not discard your first solution (and funnily enough I hit on exactly the same solution after mailing) as it gives regular ticks and labels of the y axis rather than having them all bunched up in the region of the data. So there is a choice of solutions.
----------------------------------------
> From: [email protected]
> To: [email protected]
> Date: Thu, 21 Jun 2012 17:04:09 +0100
> Subject: st: RE: RE: yrescale cancels yscale(range()) in graphs by a categorical variable
>
> Please belay all that as so as a boatload of red herrings.
>
> Here is a much better solution:
>
> scatter price length, by(foreign, yrescale) ymti(0, tlength(0))
>
> I added a minor tick at 0 of length 0. You have to look hard to see it, but it's there.
>
> Vincent L. Wiggins alerted me to the utility of ticks that aren't really there.
>
> Of course, it might just be that insisting that your y axis labels include 0 is acceptable to you too.
>
> Nick
> [email protected]
>
> Nick Cox
>
> I don't have a good answer. The answer to many of these small -by:- problems is to tuck an extra option inside -by()- but that doesn't work here.
>
> I do have a work-around.
>
> sysuse auto
> gen zero = 0
> scatter price zero length, by(foreign, yrescale legend(off)) ms(Oh none) ytitle("`: var label price'")
>
> Here you have a variable that is identically zero and so forces the scale to begin at zero. But you have to zap the legend and marker symbol that you don't want and reinstate the axis title that you do want.
>
> Toby Robertson
>
> I want to create a set of plots of y on x according to values of a categorical variable c. I would like each plot a) to have its own scale for the y-axis, but b) to begin from zero.The basic syntax
> - twoway scatter y x, by(c)
> creates separate graphs with a common y-axis scale, not necessarily starting from zero.
> To achieve (a) a separate y-axis scale for each graph (but not necessarily starting from zero) I can use:
> - twoway scatter y x, by(c, yrescale)
> To have (b) each y-axis start from zero (but with a common scale for all of them) I can use:
> - twoway scatter y x, by(c) yscale(range(0))
> However, the combination of the two does not achieve (a) and (b).  The -yscale(range(0))- option has no effect.
> - twoway scatter y x, by(c, yrescale) yscale(range(0))
> What to do? This must be a common enough requirement. Without understanding Stata's graphic object model too well, I think there ought to be a parameter in the yrescale option such as yrescale(min(0)) that would let me do this easily, but there is not. A workaround involving combining separate graphs by category seems tedious.
>
> *
> * 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/
>
> *
> * 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/
 		 	   		  
*
*   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–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index