{smcl}
{* 11jan2004}
{hline}
help for {hi:cvxplot}{right:R Allan Reese, University of Hull, UK}
{hline}
program cvxplot
    version 8.0
    syntax varlist(min=4) [if] [in] ///
    [ , Hulls(numlist int min=0 max=2 >0) MDPlot(int 8) ///
        GROup(varname) SELect(numlist int min=0 >0 sort) ///
        noREPort MEAns SCATopt(string) SAVing(string)]

{title:Draws convex hulls on scatterplot, using values returned by cvxhull.}

                ANY OTHER USE IS ENTIRELY AT THE USER'S RISK

{p 8 17 2}
{cmd:cvxplot}
{it:yvar xvar list of hulls}
[{cmd:if} {it:exp}]
[{cmd:in} {it:range}]
[{cmd:,}
{break}   
     {cmdab:h:ulls:(}{it:int}{cmd:[}{it:, int}{cmd:])}
     {cmdab:gro:up:(}{it:varname}{cmd:)}
     {cmdab:sel:ect:(}{it:numlist}{cmd:)}
{break}
     {cmdab:norep:ort}
     {cmdab:mea:ns}
     {cmdab:scat:opt:(}{it:string}{cmd:)}
     {cmdab:sa:ving:(}{it:graph_filename}{cmd:[, replace])}]

{title:Description}

{p 4 4 2}

{cmd:cvxplot} makes a scatterplot and draw convex hulls of a group of
points in two-dimensional space. Each hull is defined by two lines
joining the bottom-left point to the top-right point. The observations
do not need to be sorted before calling the routine, but the group
variable {it:must} match the one used in setting up the hulls. The coding
used for each hull is as set up by cvxplot, the "left" and "right"
vectors containing the "y" values for a line.

Typical use may be to call cvxhull to calculate many hulls and save
them, then call cvxplot to draw selected hulls for selected groups. 

eg
{p 8 8 2}
cvxhull yv xv, hulls(50) group(gv) mdp(5) prefix(hn) saving(first5)
{break}
cvxplot yv xv hn1l-hn50r, hulls(50 10) group(gv) saving(by10)
{break}
cvxplot yv xv hn1l-hn50r, h(50 2) gro(gv) sav(odds)
{break}
cvxplot yv xv hn2l-hn50r, h(50 2) gro(gv) sav(evens)


{title:Parameters}

There must be a varlist with an even number of names. The first two are
the y and x; the remainder are pairs of variables for each layer of
hull. The routine cvxhull saves the hull variables in a block so that
normally you need refer only to first-last.

The {cmd:if} and {cmd:in} qualifiers act as usual to prescribe a subset 
of observations to be considered. It is left to the user to decide if a
selection different from the one in force for cvxhull gives sensible
results. 

{title:Options}

Main options
{p 4 8 2}

{cmd:hulls(}{it:numlist}{cmd:)} one or two integers that define the maximum 
number of hulls to be plotted from the varlist. Defaults to 1.  
If the second integer has a value n, only the first and every n'th
hull {it:from the varlist} are plotted.
   
Some spurious comments relating to pen styles may be output for hull
levels when large numbers of hulls are defined.  These appear to be
harmless.

{cmd:group(}{it:varname}{cmd:)} separate hulls are defined for each set of
points identified with a different value of {it:varname}. The variable
may be numeric or string.  A table is generated showing the equivalence 
of numbers with the original values.

{cmd:select(}{it:numlist}{cmd:)} only groups indexed in the list will have
hulls drawn, but other groups will be plotted as points.  
Different plots may therefore be obtained by the commands

           cvxplot  y x if group==1
    and
           cvxplot  y x, group(group) select(1)

{cmd:means} group means of y-x will be added to the graph as solid triangles.

{cmd:scatopt(}{it:string}{cmd:)} provides a string of options that will
be applied to the scatterplot. Any scatterplot options can be applied, 
obvious examples being scatopt(ms(i)) to make the points invisible 
leaving only the hull outlines, scatopt(mlab(var)) to mark each point 
with a value.
    
{cmd:noreport suppresses the progress messages while the program is running.

{cmd:saving(}{it:graph_filename}{cmd:[,replace])} saves the graph in a .gph file.


{title:Examples}

    . {cmd:cvxplot  yvar xvar _cvxh1l _cvxh1r}
    Draws a default scatterplot with one convex hull containing all
    the observations using cvxhull's standard names.

    . {cmd:cvxhull  y x, h(5) group(year) prefix(hl) scat(mlab(month))}
    . {cmd:cvxplot  y x hl1l-hl5r, group(year) scat(ms(i)) h(5)}
    The first call computes 5 hulls but draws just one for each year and
    the month identifiers will be enclosed by a boundary.  The second call
    shows all the hulls but not the points.

    . {cmd:gen lab = _n if hlpts==1}
    . {cmd:cvxplot  y x hl1l-hl5r, group(year) prefix(hl) h(2) scat(mlab(lab))}
    Draws two levels of hull but labels only the points on the outer one. 

{title:Author}

         R Allan Reese, University of Hull, UK
         r.a.reese@hull.ac.uk


{title:Also see}

{p 4 4 2}
On-line: help for {cmd:cvxhull} {cmd:graph} {cmd:scatter}
{break} 
 Manual: [R] graph, [R] connectlines

