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]

From |
Eric Booth <[email protected]> |

To |
"<[email protected]>" <[email protected]> |

Subject |
Re: st: Suppress labeling of categorical axis values in graph bar/hbar |

Date |
Mon, 20 Dec 2010 15:16:08 +0000 |

<> On Dec 20, 2010, at 8:12 AM, Davide Cantoni wrote: > Eric -- thanks for your reply. It is somehow convincing me that I am > almost as well off by typing out the relabel() option manually. > Sure, I alluded to this in my post -- its utility will depend on the size of your data (and how often you might expect to change the code -- if you had to re-type the relabel() option several times because of mistakes or new/updated data, etc, then this code would be increasingly useful). Again, this code could be significantly simplified if someone figures out how to use the local to store/pass the double quotes to relabel(). > The other thing I wonder is how to get rid of the numbers on the > categorical axis. In your second code, which works fine, there are > still the ordinal numbers of each observation, instead of the names, > left. There's no way to suppress those? > There are no numbers for each "make" categorical observation on my graph -- I'm not sure how/why you see them. Did you augment the code I sent? I ran this with Stata 11 MP, Mac OSX, using the -scheme s2color- (though I don't know how this makes a difference). Make sure there is a space between the double quotes in the line (location of space marked with a capital X below for illustration): if !inlist(`n', 1, 20, 40, 60 , 74) /// replace o`varname' = o`varname' + `" `n' "X" "' You may have lost that space when copy/pasting the code from your email client to your Stata do-file editor. __ Eric A. Booth Public Policy Research Institute Texas A&M University [email protected] Office: +979.845.6754 Fax: +979.845.0249 http://ppri.tamu.edu > > > On 18 December 2010 23:31, Eric Booth <[email protected]> wrote: >> <> >> >> I think that working with the relabel option is your best bet. You can automate >> the creation of the relabel() expression with a loop, but normally I'd suggest >> building it in a local macro , but I couldn't get the local to store the double >> quotes for use in the relabel option. >> >> Here's some examples of things I tried: >> >> ***! >> sysuse auto, clear >> forval n = 1/`=_N' { >> loc la1 `la1' `"`n' " " "' >> loc la2 `la2' "`n' " " " >> loc la3 `la3' `n' `" "' >> loc la4 `"`la4' `n' " "'"' >> } >> forval n = 1/4 { >> di in y as smcl "`n' {hline}" >> di in g "`la`n''" >> } >> ***! >> Anyone have an idea of how to store the double quotes in a local to pass to the >> relabel option? >> >> >> Since using the local didn't work for me, here's a less straightforward solution >> using a couple of string variables (which are limited to 244 chars) to do essentially >> the same thing: >> >> ***********! >> sysuse auto, clear >> >> foreach v in "1/15" "16/30" "31/45" "46/60" "61/74" { >> **get variable name** >> loc varname `v' >> loc varname: subinstr local varname `"/"' "", all >> >> **create "o" vars with relabel option** >> g o`varname' = "" >> forval n = `v' { >> if !inlist(`n', 1, 20, 40, 60 , 74) /// >> replace o`varname' = o`varname' + `" `n' " " "' >> if inlist(`n', 1, 20, 40, 60 , 74) /// >> replace o`varname' = o`varname' + `" `n' "`=make[`n']' ""' >> } >> } >> >> ds o* //<-- Here's the new vars for relabel() >> >> graph hbar (asis) price, bargap(10) /// >> over(make, relabel(`=o115' /// >> `=o1630' `=o3145' `=o4660' `=o6174') /// >> label(angle(horizontal) labsize(vsmall) labgap(5))) >> >> ***********! >> >> After kludging all this together, it might be more work than typing out >> the relabel() for 74 obs in the auto.dta; however, it would be useful >> for much larger datasets. (However, you can't get too much larger >> before the bars become indistinguishable.) >> >> >> - Eric >> __ >> Eric A. Booth >> Public Policy Research Institute >> Texas A&M University >> [email protected] >> Office: +979.845.6754 >> Fax: +979.845.0249 >> http://ppri.tamu.edu >> >> >> On Dec 18, 2010, at 3:13 PM, Davide Cantoni wrote: >> >>> Hello, >>> >>> I would like to draw a bar chart displaying the values of a given >>> variable for all the observations in the dataset. However, since there >>> are many observations, I would like to label only some of them (some >>> representative cases). Conceptually, this is similar to this working >>> example: >>> >>> *** begin example >>> sysuse auto, clear >>> graph hbar (asis) price, over(make, sort(price)) >>> *** end example >>> >>> As you can see, putting all the labels on the categorical axis leads >>> to overcrowding. What I would like to do is to label only some >>> representative examples, e.g. only "Renault Le Car", "VW Diesel" and, >>> say, "Lincoln Versailles". I guess I can achieve the suppression of >>> labels with some relabel() command inside the over() parenthesis, but >>> given the large number of observations, this would be incredibly >>> cumbersome. Any other suggestions? >>> >>> Thanks in advance, >>> >>> Davide >>> * * * 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/

**References**:**st: Suppress labeling of categorical axis values in graph bar/hbar***From:*Davide Cantoni <[email protected]>

**Re: st: Suppress labeling of categorical axis values in graph bar/hbar***From:*Eric Booth <[email protected]>

**Re: st: Suppress labeling of categorical axis values in graph bar/hbar***From:*Davide Cantoni <[email protected]>

- Prev by Date:
**st: file name problem with stata2mplus** - Next by Date:
**st:the disadvantage of using -xi- to create indicators for categorical variables** - Previous by thread:
**Re: st: Suppress labeling of categorical axis values in graph bar/hbar** - Next by thread:
**RE: st: Suppress labeling of categorical axis values in graph bar/hbar** - Index(es):