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: Bar chart with several different variables on X axis
From
"Nick Cox" <[email protected]>
To
<[email protected]>
Subject
RE: st: Bar chart with several different variables on X axis
Date
Fri, 26 Mar 2010 13:12:51 -0000
Uli is right, but Florian's problem remains getting there from where he is.
Florian is right, and I think this has arisen several times before. But it's more fun re-creating a solution than ploughing through the results of a Google on bar charts in Stata, or whatever.
With three variables and three categories, Florian's problem is that -graph bar- has the structure the wrong way round has far as he is concerned. Therefore, one way to approach the problem is to change the data structure. (This clearly doesn't rule out a neater solution with -graph bar-, but I don't know of one.)
Let's fake a dataset:
set obs 30
set seed 42
gen group = ceil(_n/10)
label def group 1 A 2 B 3 C
label val group group
forval j = 1/3 {
gen y`j' = runiform()
}
It's easier to work with a reduced dataset. -collapse- defaults to means.
collapse y?, by(group)
Now we need a -reshape-:
reshape long y , i(group) j(variable)
This is what the data now look like
l
+-----------------------------+
| group variable y |
|-----------------------------|
1. | A 1 .6148067 |
2. | A 2 .4555445 |
3. | A 3 .6178768 |
4. | B 1 .4991903 |
5. | B 2 .5034846 |
|-----------------------------|
6. | B 3 .4378768 |
7. | C 1 .4493385 |
8. | C 2 .4305637 |
9. | C 3 .4129249 |
+-----------------------------+
Now it is easy to get two kinds of graph:
. graph bar y , over(group) over(variable)
. graph bar y , over(variable) over(group)
You've lost the different colours, but that's arguably gain too. The labelling will need work, but that's standard options.
Nick
[email protected]
Ulrich Kohler
Besides googling, have you also looked in the help of -graph bar-?
If you type
. help graph_bar##group_options
you'll find an example that is similar to
. sysuse auto
. graph bar weight, over(for) over(rep78)
Florian Köhler:
> I am trying to generate a bar chart where I have several different variables
> on the X-Axis (Var 1 to Var 3 in the example below, identically scaled) and
> the according mean on the Y axis. Each of this variables should be split
> into three groups according to a categorical variable "Cat" (categories A,
> B,C in the example). The graph should look like that.
>
> mean
> |
> | ___ ___
> ___
> | ___ | | | |
> | |
> | | | | | | | ___
> ___ | |
> | ___ | | | | | | ___ | |
> | | | | ___
> | | | | | | | | | | | | |
> | | | | | |
> | | | | | | | | | | | | |
> | | | | | |
> | | | | | | | | | | | | |
> | | | | | |
> | |A| |B| |C| |A| |B| |C|
> |A| |B| |C|
>
> --------------------------------------------------------------------------
> Var 1 Var 2
> Var 3
>
>
> Isn't the graph I need pretty common? I find it quite strange that I cannot
> figure out how to make it work even after excessive googling ;).
>
> All I managed to get was a bar chart split into three groups A, B, and C
> (according to the three categories in variable "cat") and for each of these
> groups the mean of var 1 var2 etc was graphed.
*
* 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/