I am familiar with -separate-, as should be clear from the manual entry,
but I don't see any gain from using -separate- in this example.
I was using -separate- for a similar graphical problem of my own with
two groups only yesterday, but then belatedly realised that using (the
equivalent of) -if group==1- and -if group==2- gave the separation
required without the artifice of two separate variables. One can be
over-fond of particular tricks, not that it matters much if the problem
is solved.
The real advantage of -separate- is when you can plot two or more
variables with a single call. Thus with
sysuse auto
separate mpg, by(foreign) veryshortlabel
scatter mpg? weight, ms(oh x)
there is a bigger advantage, especially if the variables created are
going to be useful for another purpose.
However, there is evidence that even many experienced Stata users are
not aware of -separate-, so on that ground publicity is welcome.
Nick
[email protected]
Martin Weiss
Thanks for the flowers! How about the -separate- trick, then? (Fishing
for
compliments, I know...)
Nick Cox
Thanks for this. The trick Martin used in his replies to your original
of putting frequently used options in a local macro deserves emphasis.
With not 2 but 3, 4, ... groups it becomes especially valuable.
local opts discrete freq gap(5) xla(1/5)
twoway histogram ease if group==1, color(red) `opts'
|| histogram ease if group==2, color(blue) `opts' by(group, legend(off))
Nick
[email protected]
Philip Jones
Many thanks for the help Nick! That works perfectly.
For others who may be searching about this question, it seems like you
only need to include by(group) once in the command (with or without
turning off the legend). Just a small point I found out running the
command both ways.
[email protected]
>> . twoway histogram ease if group==1, color(red) gap(5) discrete freq
>> by(group) ///
>> || histogram ease if group == 2, color(blue) by(group, legend(off))
>> discrete freq xla(1/5) gap(5)
Philip Jones
> I would like to know if it is possible in Stata to have different
> colours for plots in histograms created using the by() option. For
> instance, if I would like to plot frequencies of a Likert scale about
> the ease of a process (from 1 to 5) in two separate groups, I can
> generate a nice histogram using the by() option, but both "sides" (or
> plots) of the graph are the same colour.
>
> For instance,
>
> input group ease
> 1 1
> 1 2
> 1 3
> 1 3
> 1 3
> 1 3
> 1 4
> 1 5
> 1 5
> 2 2
> 2 2
> 2 2
> 2 3
> 2 3
> 2 4
> 2 4
> 2 5
> 2 5
> end
> graph twoway histogram ease, by(group) discrete frequency xtick(1(1)5)
> xlabel(1(1)5) gap(5) color(red)
>
> This gives me a histogram, but I would like a different colour for
> each
> plot - say red for the plot on the left and blue for the one on the
> right.
>
> I am sure there is a trivial way of achieving this, but I haven't been
> able to find it. The barlook_options are not valid for histograms, and
> using the graph editor to alter the colour also results in both plots
> becoming the same colour.
*
* 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/