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: percent symbols in catplot

 From Eric Booth To statalist@hsphsun2.harvard.edu Subject Re: st: RE: percent symbols in catplot Date Fri, 26 Feb 2010 16:37:27 -0600

```>

On Feb 26, 2010, at 4:18 PM, Martin Weiss wrote:

> BTW Eric, is there a conceivable case that would require one to check for a
> missing "r(max)"? Anyway, the instinct to check for missings whenever
> "greater than" is employed is a healthy one :-)

No, it's just habit.  The only way -sum- should report a missing r(max) is if all the data in the variable were missing--which wouldn't lend its self to a useful graph.

Thanks for updating this to address my second example.  In applying this to my real data, I used -graph combine- but this is faster than waiting on -graph combine-.  Also, there is an advantage in using the "by" option, in lieu of -graph combine-, in that it leaves out the extra set of yaxis labels, which looks much nicer, and it places the "by" group labels at the top of the graphs automatically.

Best,

Eric
__
Eric A. Booth
Public Policy Research Institute
Texas A&M University
ebooth@ppri.tamu.edu
Office: +979.845.6754

On Feb 26, 2010, at 4:18 PM, Martin Weiss wrote:

>
> <>
>
> The second graph requested in Eric`s initial post requires some
> modification:
>
>
> *******
> sysuse auto, clear
> contract rep78 foreign, percent(perc)
>   *-----added
> 	qui sum perc
> 	local x = round(`r(min)', 10)
> 	local y = round(`r(max)', 10)+10
> 	local t 10
> if `r(max)'>75 & !mi(`r(max)') {
> 		local t  25
> 	 }
> 	mylabels `x'(`t')`y', local(labels) myscale(@) suffix("%")
>   *------
> gen strpercent=string(perc, "%4.1fc")+ " %"    /*chg. to 1 dec place*/
> twoway (bar perc rep78)  /*
> */ (scatter perc rep78, mlabcolor(black) msymbol(none)  /*
> */ mlabsize(medium) mlabel(strpercent)  /*
> */ mlabposition(12)), by(foreign, legend(off)  note(""))  /*
> */ yla(`labels')   // <-- changed to use local created by -mylabels-
> *******
>
> BTW Eric, is there a conceivable case that would require one to check for a
> missing "r(max)"? Anyway, the instinct to check for missings whenever
> "greater than" is employed is a healthy one :-)
>
>
> HTH
> Martin
>
> -----Original Message-----
> From: owner-statalist@hsphsun2.harvard.edu
> [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Eric Booth
> Sent: Freitag, 26. Februar 2010 22:33
> To: statalist@hsphsun2.harvard.edu
> Subject: Re: st: RE: percent symbols in catplot
>
>>
>
> Thanks, Martin.
> This is a great workaround for my situation (& it's much better than my idea
> of tinkering with the .grec file output).
>
>
>> I failed to bring this up at the last wishes & grumbles in Florence. A
>> -format- that adds the percentage sign, just like in spreadsheet
> software...
>
> Yes I agree, hopefully Stata will implement a percentage format someday.
>
> ___
> Just FYI for anyone else who needs something like this:
> I slightly modified Martin's example to use NJC's -mylabels- (from SSC &
> referenced in the 2008 thread Martin referred me to)  so that I could easily
> shift the yaxis with the range of the data in a way that makes sense for the
> way I need to display results--so, something like:
>
> *******begin
> sysuse auto, clear
> contract rep78, percent(perc)
>   *-----added
> 	qui sum perc
> 	local x = round(`r(min)', 10)
> 	local y = round(`r(max)', 10)+10
> 	local t 10
> 	if `r(max)'>75 & !mi(`r(max)') {
> 		local t  25
> 	 }
> 	mylabels `x'(`t')`y', local(labels) myscale(@) suffix("%")
>   *------
> gen strpercent=string(perc, "%4.1fc")+ " %"    /*chg. to 1 dec place*/
> twoway (bar perc rep78)  /*
> */ (scatter perc rep78, mlabcolor(black) msymbol(none)  /*
> */ mlabsize(medium) mlabel(strpercent)  /*
> */ mlabposition(12)), legend(off)  /*
> */ yla(`labels')   // <-- changed to use local created by -mylabels-
> *******end
> (note that the ylab changes from increasing by 10 to increasing by 25 if the
> r(max) > 75)
>
>
> Thanks again,
>
> Eric
> __
> Eric A. Booth
> Public Policy Research Institute
> Texas A&M University
> ebooth@ppri.tamu.edu
> Office: +979.845.6754
>
>
> On Feb 26, 2010, at 2:47 PM, Martin Weiss wrote:
>
>>
>> <>
>>
>> You can always go for a kludge:
>>
>>
>> *******
>> sysuse auto, clear
>> contract rep78, percent(perc)
>> gen strpercent=string(perc, "%4.2fc")+ " %"
>> twoway (bar perc rep78)  /*
>> */ (scatter perc rep78, mlabcolor(black) msymbol(none)  /*
>> */ mlabsize(medium) mlabel(strpercent)  /*
>> */ mlabposition(12)), legend(off)  /*
>> */ yla(0 "0%" 10 "10%" 20 "20%" 30 "30%" 40 "40%" 50 "50%")
>> *******
>>
>>
>> HTH
>> Martin
>>
>>
>> -----Original Message-----
>> From: owner-statalist@hsphsun2.harvard.edu
>> [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Eric Booth
>> Sent: Freitag, 26. Februar 2010 21:12
>> To: statalist@hsphsun2.harvard.edu
>> Subject: st: percent symbols in catplot
>>
>>>
>>
>> I am using -catplot- (from SSC) on Stata 11 MP for Mac OSX.  I'd like to
>> show the percent sign in the label for each of the category bars when
> using
>> the "percent" option.
>>
>> For example,
>> ****
>> webuse auto, clear
>> catplot bar rep78,  percent blabel(bar, position(outside) format(%9.1f))
>> **or**
>> catplot bar rep78,  by( for)  percent blabel(bar, position(outside)
>> format(%9.1f))
>> ****
>> shows the percent of each rep78 category out of 100, but I can't get it to
>> show the % sign, so it could say "43.5%", etc.
>>
>> Using graph editor, I found that I can add a % sign to the bar label text
>> manually (though I'd rather not have to do that for many graphs), but
> after
>> looking through the barlabel options help documentation, I couldn't figure
>> out how to change the bar label automatically.  (I had the idea that if I
>> could override the bar labels like you can the text for a key in a legend
>> then I could calculate and substitute these values into the -catplot-
>> command in a loop, but I haven't found a way to do this using the barlabel
>> option)
>>
>> Another option might be to write something that automates those graph
>> recorder grec file changes (ex:  when I add the "%" by hand, it issues the
>> command:
>>
>> .plotregion1.barlabels[3].text.Arrpush 43.5%
>>
>> in the recording), but this is a pain.  Any suggestions?
>>
>> Thanks,
>>
>> Eric
>> __
>> Eric A. Booth
>> Public Policy Research Institute
>> Texas A&M University
>> ebooth@ppri.tamu.edu
>> Office: +979.845.6754
>>
>> *

*
*   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–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index