Ah! I see. Now that is fairly simple. It's just
that -graph bar- is not the best way to do it.
-- or indeed a way to do it at all.
egen percent = mean(100 * foreign), by(rep78)
egen total = sum(1), by(rep78)
twoway bar percent rep78, barw(0.5) ||
scatter percent rep78, mlabel(total) mlabpos(12)
ms(none) legend(off) yti(percent foreign)
I follow the convention here that percents add to 100,
not 1.
Nick
[email protected]
Ricardo Ovaldia
> Thank you Nick. Actualy what I was trying to do is
> very simple (I thought).
>
> Useing the auto data. I collapse to get percentages
> and totals by -rep78- using:
>
> .collapse (mean) percent=foreign (count)
> total=foreign,by(rep78)
>
> This yields:
>
> rep78 percent total
> 1. 1 0 2
> 2. 2 0 8
> 3. 3 .1 30
> 4. 4 .5 18
> 5. 5 .818182 11
> 6. . .2 5
>
> Note that these are the six bars to be plotted.
> (actualy only 5)
>
> I can graph using:
>
> . graph bar percent, over( rep78)
>
> But I want the variable -total- on on top of each
> graph.
>
> Ricardo.
>
>
> --- Nick Cox <[email protected]> wrote:
>
> > Obviously you are a discriminating person
> > you knows exactly what you want from Stata.
> > Sooner or later you will have to become
> > a programmer.
> >
> > I am not quite clear how your percents
> > are to be calculated, over all the values
> > or within each group.
> >
> > Here is one way for the first case. You know that
> > there are
> > 69 values for which -foreign- and -rep78-
> > are not missing. You ask for a -catplot-
> > showing frequency. But you fix the y axis
> > so that it shows percent. A tool for
> > doing this is -mylabels- from SSC.
> >
> > . mylabels 0(10)40, myscale(@ * .69) local(la)
> > 0 "0" 6.9 "10" 13.8 "20" 20.7 "30" 27.6 "40"
> >
> > . catplot bar rep78 foreign, blabel(bar,
> > position(outside)) yla(`la') ytitle(percent)
> >
> > So, for example, the label "40" appears at
> > where 27.6 would be shown on the frequency
> > scale, because 40% of 69 is 27.6.
> >
> > Nick
> > [email protected]
> >
> > > -----Original Message-----
> > > From: [email protected]
> > > [mailto:[email protected]]On
> > Behalf Of Ricardo
> > > Ovaldia
> > > Sent: 10 November 2005 18:08
> > > To: [email protected]
> > > Subject: Re: st: RE: graph bar labels
> > >
> > >
> > > Not exactly, Nick. I basicaly plooting one
> > variable
> > > (percetage) over -rep78-, but will like the total
> > > number of observations that when into calculating
> > each
> > > percentage on top of each bar.
> > >
> > > Thank you,
> > > Ricardo.
> > >
> > > --- Nick Cox <[email protected]> wrote:
> > >
> > > > There may be an official Stata solution, but
> > what
> > > > I would recommend is that you try -catplot- from
> > > > SSC.
> > > > -catplot- appeared early in the life of Stata 8
> > > > given
> > > > the discovery that -graph bar- is not that good
> > at
> > > > counting.
> > > >
> > > > . catplot bar rep78 foreign, blabel(bar,
> > > > position(outside))
> > > >
> > > > Is that what you want?
> > > >
> > > > Nick
> > > > [email protected]
> > > >
> > > > Ricardo Ovaldia
> > > >
> > > > > I will like to place the number of observation
> > on
> > > > top
> > > > > of each bar. For example, using the auto
> > data:
> > > > > . sysuse auto, clear
> > > > > . collapse (mean) foreign (count)
> > > > > total=foreign,by(rep78)
> > > > > . graph bar foreign, over( rep78)
> > > > >
> > > > > What I want is the number in the variable
> > -total-
> > > > on
> > > > > top of the corresonding graph. I have not
> > been
> > > > able
> > > > > to do this and -blabel()- does not help.
> > > >
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/