// ploticus data display engine. Software, documentation, and examples.
// Copyright 1998-2002 Stephen C. Grubb (scg@jax.org).
// Covered by GPL; see the file 'Copyright' for details.
// http://ploticus.sourceforge.net
//// SCAT - do a scatterplot of two variables with pearson coefficient and regression line
//// set scat-specific defaults..
#if @CM_UNITS = 1
#setifnotgiven rectangle = "2.5 2.5 10 10"
#setifnotgiven ptsize = "0.1"
#set LBLDIST = 1.38
#set REGLBL = 1.5
#set PTLBL = 0.18
#set TAILS = 0.05
#else
#setifnotgiven rectangle = "1 1 4 4"
#setifnotgiven ptsize = "0.04"
#set LBLDIST = 0.55
#set REGLBL = 0.6
#set PTLBL = 0.07
#set TAILS = 0.02
#endif
#setifnotgiven ptshape = "circle"
#setifnotgiven ptcolor = "blue"
#setifnotgiven ptcolor2 = "red"
#setifnotgiven ptcolor3 = "green"
#setifnotgiven ptcolor4 = "black"
#setifnotgiven corrcolor = "green"
#setifnotgiven xerr = ""
#setifnotgiven err2 = ""
#setifnotgiven xerr2 = ""
#setifnotgiven errcolor = "gray(0.7)"
#setifnotgiven id = ""
#setifnotgiven idcolor = "orange"
#setifnotgiven x2 = ""
#setifnotgiven y2 = ""
#setifnotgiven ptshape2 = square
#setifnotgiven color2 = red
#setifnotgiven x3 = ""
#setifnotgiven y3 = ""
#setifnotgiven ptshape3 = diamond
#setifnotgiven color3 = black
#setifnotgiven x4 = ""
#setifnotgiven y4 = ""
#setifnotgiven ptshape4 = triangle
#setifnotgiven color4 = powderblue
#setifnotgiven ptstyle = filled
#if @ptstyle !in filled,outline
#set ptstyle = filled
#endif
#setifnotgiven name = "#usefname"
#setifnotgiven name2 = "#usefname"
#setifnotgiven name3 = "#usefname"
#setifnotgiven name4 = "#usefname"
#if @CM_UNITS = 1
#setifnotgiven legend = "max+1.5 max"
#else
#setifnotgiven legend = "max+0.6 max"
#endif
//// load standard vars..
#include $chunk_setstd
//// read data..
#include $chunk_read
//// required vars..
#musthave x y
//// set up plotting area..
#include $chunk_area
#if @xrange != ""
xrange: @xrange
#elseif @cats = yes
xscaletype: categories
xcategories: @x
// following added 9/2/02 scg
catcompmethod: exact
#else
xautorange: datafields=@x,@x2,@x3,@x4 incmult=2.0 nearest=@xnearest
#endif
#if @yrange != ""
yrange: @yrange
#else
yautorange: datafields=@y,@y2,@y3,@y4 incmult=2.0 nearest=@ynearest
#endif
//// x axis
#include $chunk_xaxis
stubcull: yes
//// y axis
#include $chunk_yaxis
stubcull: yes
labeldistance: @LBLDIST
//// title
#include $chunk_title
//// user pre-plot include
#if @include1 != ""
#include @include1
#endif
//// do regression line and correlation..
#if @corr = yes
#proc curvefit
curvetype: regression
xfield: @x
yfield: @y
linedetails: color=@corrcolor width=0.5
#ifspec maxinpoints
#proc annotate
location: max min-@REGLBL
textdetails: align=R size=8 color=@corrcolor
text: r = @CORRELATION
@REGRESSION_LINE
#endif
//// do labels..
#if @id != ""
#proc scatterplot
xfield: @x
yfield: @y
#if @id != ""
labelfield: @id
#endif
textdetails: size=6 color=@idcolor adjust=0,@PTLBL
#ifspec cluster
#endif
//// do error bars..
#if @err != ""
#proc bars
locfield: @x
lenfield: @y
errbarfield: @err
thinbarline: color=@errcolor width=0.5
tails: @TAILS
truncate: yes
#ifspec ptselect select
#saveas EB
#endif
#if @xerr != ""
#proc bars
#clone EB
locfield: @y
lenfield: @x
horizontalbars: yes
errbarfield: @xerr
#ifspec ptselect select
#endif
//// do 2nd set of error bars..
#if @err2 != ""
#proc bars
#clone EB
locfield: @x2
lenfield: @y2
errbarfield: @err2
#ifspec ptselect2 select
#endif
#if @xerr2 != ""
#proc bars
#clone EB
locfield: @y2
lenfield: @x2
errbarfield: @xerr2
horizontalbars: yes
#ifspec ptselect2 select
#endif
// scat prefab will always attempt to use pix* shapes..
#if @ptshape !like pix*
#set ptshape = "pix" @ptshape
#endif
//// do the data points last so they are on top of the rest of the stuff..
#proc scatterplot
xfield: @x
yfield: @y
symbol: shape=@ptshape style=@ptstyle radius=@ptsize color=@ptcolor
#ifspec clickmapurl
#ifspec clickmaplabel
legendlabel: @name
#ifspec ptselect select
#ifspec cluster
//// optional 2nd set of points...
#if @x2 != "" && @y2 != ""
#if @ptshape2 !like pix*
#set ptshape2 = "pix" @ptshape2
#endif
#proc scatterplot
xfield: @x2
yfield: @y2
symbol: shape=@ptshape2 style=@ptstyle radius=@ptsize color=@ptcolor2
legendlabel: @name2
#ifspec ptselect2 select
#ifspec cluster
#endif
//// optional 3d set of points...
#if @x3 != "" && @y3 != ""
#if @ptshape3 !like pix*
#set ptshape3 = "pix" @ptshape3
#endif
#proc scatterplot
xfield: @x3
yfield: @y3
symbol: shape=@ptshape3 style=@ptstyle radius=@ptsize color=@ptcolor3
legendlabel: @name3
#ifspec ptselect3 select
#ifspec cluster
#endif
//// optional 4th set of points...
#if @x4 != "" && @y4 != ""
#if @ptshape4 !like pix*
#set ptshape4 = "pix" @ptshape4
#endif
#proc scatterplot
xfield: @x4
yfield: @y4
symbol: shape=@ptshape4 style=@ptstyle radius=@ptsize color=@ptcolor4
legendlabel: @name4
#ifspec ptselect4 select
#ifspec cluster
#endif
// do legend
#if @name != "#usefname" || @header = yes
#proc legend
location: @legend
#ifspec legendfmt format
#ifspec legendsep sep
#ifspec legwrap wraplen
#ifspec legbreak extent
#ifspec legtitle title
#ifspec legbox backcolor
#ifspec legframe frame
#ifspec legtextdet textdetails
#endif
//// user post-plot include..
#if @include2 != ""
#include @include2
#endif
syntax highlighted by Code2HTML, v. 0.9.1