Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: st: bar graph axis color- frustrated

From   "Nick Cox" <>
To   <>
Subject   RE: st: bar graph axis color- frustrated
Date   Fri, 11 Jun 2010 18:27:30 +0100

Reference for -labmask-

SJ-8-2  gr0034  . . . . . . . . . .  Speaking Stata: Between tables and
        (help labmask, seqvar if installed) . . . . . . . . . . . .  N.
J. Cox
        Q2/08   SJ 8(2):269--289
        outlines techniques for producing table-like graphs


Nick Cox

This information to me supports my earlier suggestion. Given this kind
of problem my focus would be entirely on creating a results set,
alongside or independently of your dataset. If you create an axis
variable running 1,2,3,... and associated text labels, then a helper
program -labmask- was written up in the Stata Journal which maps values
to value labels.  

A strategy would be 

* initialise variables 

gen axisorder = _n 

gen label = "" 

gen num1 = . 
gen num2 = . 

local obsno = 1 

* loop over possibilities 

quietly foreach <loopinfo>  { 

replace label = "<text for this situation>" in `obsno' 

replace num1 = <result for this situation> in `obsno' 

local ++obsno 


labmask axisorder, val(label) 

graphics in terms of axisorder, num1, num2, etc. 

I don't see that you need StataCorp to fix the graphics. Conversely, a
fix general enough to tackle what you want to do would probably result
in a syntax very difficult to understand.

A limitation of the graph you displayed is that very space is devoted to
data and that the two sets are difficult to compare precisely.
Overlaying the graphs seems indicated. 


Fred Wolfe

I hope I can explain it it. First, let me say that I think I can
figure out ways to do this by reorganizing the data. But the time
involved in doing this is (at least for me) too long.

Consider the example below:

This is a special case of a general problem. Special because in this
instance it is a results data set that was made by copying results
from Stata to a new data set.

In this instance, each named line represents a different variable. The
code for one side of the graph is:

   use raoadotplotdata, clear
   graph dot (asis) age - all ,ascat ylab(.5 [.1] 1) exclude0
schem(bw) ytit(Concordance coefficient) xsize(4) ysize(5.3)

Now, what I would really like to be able to do is to not use "by" and
have both types of symbols (RA and OA) be displayed on each line. If I
simply do over(), the groups are placed far apart.

So, in general, I would like a simple way to manage multiple variables
and to display the by group or over group results on the same line or
immediately below the same line.

I have looked at stripplot, the manual, and Michael's book to no avail.

It is usually that when I come to conclusions like this there is a
simple solution that I have overlooked. I hope it is the case now.

On Fri, Jun 11, 2010 at 6:24 AM, Nick Cox <> wrote:
> Fred has raised similar issues before, but I am still fuzzy about what
> the precise problem is.
> Perhaps Fred could expand on the nitty-gritty of his difficulties with
> small realistic data example or two.
> My guess is that the right kind of solution might not be a hit to
> Stata's graphics, but some helper commands that prepare datasets to be
> fed to the graphics.
> Nick
> Fred Wolfe
> As an aside, both Michael's book and the manual spend much time in
> graph bar and dot with over(). I usually have multiple variables with
> overlapping groups. Over() doesn't help. I do wish that Stata might
> address that very common problem (at least for me).

*   For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index