Jean-Benoit Hardouin <[email protected]> asks:
> I search to display in a biplot graph (obtained with -biplot- under 
> Stata 9) the labels instead of the names of the variables. Is it 
> possible ? I have not found any help in the manual about that.
Assuming the variable labels were reasonably short and more
descriptive than the variable names, it seems a reasonable thing
to want.
My first guess came from looking at -help biplot- and looking at
the -colopts()- option which allows pcarrow_options as suboptions
(which in turn allow for marker_label_options -- see help
marker_label_options).  From this I see that I can ask for a
change in the default size of the labels with
    . biplot ... , colopts(mlabsize(huge))
(which produces "huge" labels) and I could change the color, the
gap, the position, etc.  The suboption I had hoped would be of
help was
    colopts(mlabel(...))
where I would create a variable before calling -biplot- that
contained the variable labels and pass that in through
-colopts(mlabel())-.  but the -mlabel()- suboption is not allowed
in the -colopts()- option of -biplot-.
The reason is that Stata's -graph- system thinks in terms of
observations, and the information of the variables (columns) in
-biplot- has to be handled in a special way.  -biplot- hijacks
the -mlabel()- option to accomplish the task.
Assuming that seeing the variable names in your graphs is
sufficient for your initial explorations using -biplot- and that
the variable labels are only needed when you are producing your
final biplot (for publication), here is what I would do.
I use the auto dataset as a quick example
    sysuse auto
    biplot turn trunk mpg
Assuming that this graph is what I want except that I want to
replace "turn", "trunk", and "mpg" in the graph with "Turning
Circle", "Trunk space", and "Mileage" (wording similar to what is
in the variable labels for these 3 variables) I would look at the
y and x locations where the labels should land in the graph and
use that information to directly place the text using the
-text()- option (see twoway_options and follow that to
added_text_option) while suppressing the default labels with the
-colopts(nolabel)- option.
    biplot turn trunk mpg, colopts(nolabel) text(0.3 -4.5
        "Turning Circle" -5 -4.5 "Trunk space" -3.4 5 "Mileage")
(treat the 2 lines above as one line.)
If you are needing to do this a lot you might want to write a
wrapper command that will take care of a lot of this for you
automatically.  Here is a beginning draft of such a command:
=================== begin of biplotvlab.ado =========================
*! version 1.0.0  29sep2005
program biplotvlab
        version 9
        syntax varlist(numeric min=2) [if] [in] [, *]
	// run biplot quietly (and nograph) so we can get r(V)
        qui biplot `varlist' `if' `in' , `options' nograph
        tempname V
        mat `V' = r(V)
	// build the -text()- option
        local topt "text("
        local i 0
        foreach v of local varlist {
                local ++i
		// y value
                local topt `"`topt' `= `V'[`i',2]'"'
                // x value
                local topt `"`topt' `= `V'[`i',1]'"'
                // variable label
                local topt `"`topt' `"`: var label `v''"' "'
        }
        local topt `"`topt')"'
	// call with -colopts(nolabel)- and -text()- just built
        biplot `varlist' `if' `in', `options' colopts(nolabel) `topt'
end
===================== end of biplotvlab.ado =========================
Then I would call this as follows
    biplotvlab turn trunk mpg
Notice that -biplotvlab- places the variable labels right on the
ends of the arrows.  You probably want to add logic to the code
for moving them out a bit from the ends of the arrows.  If so,
replace the
    `= `V'[`i',2]'     and     `= `V'[`i',1]'
with more elaborate code.
If anyone wants to take over this code and enhance it, that is
fine with me.  I just wanted to point out the beginning direction
for a solution.
Ken Higbee    [email protected]
StataCorp     1-800-STATAPC
*
*   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/