// 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
//// VDIST - vertical numeric frequency distribution & rangebar
//// initialize key dist-specific parameters..
#setifnotgiven y2 = ""
#setifnotgiven title2 = ""
#setifnotgiven id = ""
#setifnotgiven id2 = ""
#setifnotgiven data2 = ""
#setifnotgiven dist = centered
#setifnotgiven rangebar = yes
#setifnotgiven ygrid = "color=gray(0.8)"
#if @dist like no*
#setifnotgiven rangebarcenter = 3.0(s)
#setifnotgiven rectangle = "1 1 2 5"
#else
#setifnotgiven distcenter = 4.0(s)
#setifnotgiven rangebarcenter = 8.0(s)
#setifnotgiven rectangle = "1 1 4 5"
#endif
// rangebar parameters
#setifnotgiven barcolor = dullyellow
#setifnotgiven outliernearsym = ""
#setifnotgiven outlierfarsym = ""
#if @outliernearsym = "" && @outlierfarsym = ""
#setifnotgiven outlierlinelen = 0.1
#endif
// distribution parameters
#setifnotgiven bindiv = 5.0
#setifnotgiven distdotspread = 2.0
#setifnotgiven distcolor = blue
#setifnotgiven distdotshape = pixdiamond
#setifnotgiven distdotsize = 0.04
#setifnotgiven ptselect = ""
#setifnotgiven ptselect2 = ""
//// load standard parameters..
#include $chunk_setstd
#musthave y
#if @ptselect != ""
#set select = @ptselect
#endif
//// read data just to get range...
#include $chunk_read
//// set up plotting area
#include $chunk_area
#if @data2 = ""
#set df = @y "," @y2
#else
#set df = @y
#endif
#if @yrange = ""
yautorange: datafield=@df nearest=@ynearest
//#elseif @yrange = 0
#elseif $ntoken( 2, @yrange ) = ""
yautorange: datafield=@df nearest=@ynearest mininit=@yrange
#else
yrange: @yrange
#endif
xrange: 0 10
//// do title..
#include $chunk_title
//// show Y axis
#include $chunk_yaxis
#endproc
//// user pre-plot include
#if @include1 != ""
#include @include1
#endif
//// determine bin size
#setifnotgiven binsize = $arith(@YINC/@bindiv)
#write stderr
bin size = @binsize
#endwrite
//// read data again.. this time w/filter to do grouping..
#set context = vdist
#include $chunk_read
//// render points distribution
#if @dist !like no*
#proc scatterplot
#if @dist like hist*
clustermethod: rightward
xlocation: 0.2(s)
#else
clustermethod: horizontal
xlocation: @distcenter
#endif
clusterfact: @distdotspread
yfield: 1
symbol: shape=@distdotshape style=fill color=@distcolor radius=@distdotsize
#saveas D
#endif
////
#if @rangebar !like no*
#proc rangebar
barloc: @rangebarcenter
datafield: 2
nlocation: min-0.2
color: @barcolor
#ifspec showoutliers
#ifspec id outlierlabelfield
outlierlabeldetails: size=6
#ifspec outlierlinelen
#ifspec barwidth
#ifspec mediansym
#ifspec tailmode
#ifspec 95tics
#ifspec taildetails
#ifspec outline
#ifspec outliernearsym
#ifspec outlierfarsym
#ifspec outliernearfarcutoff
#saveas R
#endif
/////////// do 2nd set if needed........
#if @y2 != ""
// compute right hand rectangle based on the first one..
// X1 is different from x1 !!
#set X1 = $ntoken( 1, @rectangle )
#set Y1 = $ntoken( 2, @rectangle )
#set X2 = $ntoken( 3, @rectangle )
#set Y2 = $ntoken( 4, @rectangle )
#set width = $arith( @X2-@X1 )
#set X1 = $arith( @X2+0.5 )
#set X2 = $arith( @X1+@width )
#set rectangle = @X1 " " @Y1 " " @X2 " " @Y2
#set y = @y2
#if @id2 != ""
#set id = @id2
#endif
//// set up plotting area
#include $chunk_area
yrange: @YMIN @YMAX
xrange: 0 10
//// do title..
#set title = @title2
#include $chunk_title
//// show Y axis
#set ylbl = ""
#include $chunk_yaxis
#if @nostubs2 = yes
stubs: none
#endif
#endproc
//// read data again.. this time w/filter to do grouping..
#if @ptselect2 != ""
#set select = @ptselect2
#endif
#set context = vdist
#if @data2 != ""
#set data = @data2
#endif
#include $chunk_read
//// render points distribution
#if @dist !like no*
#proc scatterplot
#clone D
#endif
////
#if @rangebar !like no*
#proc rangebar
#clone R
#endif
#endif
//// user post-plot include
#if @include2 != ""
#include @include2
#endif
syntax highlighted by Code2HTML, v. 0.9.1