// 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
//// VBARS - do a bar graph (vertical bars)
//// load vbars specific parms..
#setifnotgiven barwidth = ""
#setifnotgiven xnumeric = ""
#setifnotgiven color = orange
#setifnotgiven errcolor = black
#if @CM_UNITS = 1
#setifnotgiven errwidth = 0.2
#setifnotgiven legend = "min+1.25 max+1.25"
#else
#setifnotgiven errwidth = 0.08
#setifnotgiven legend = "min+0.5 max+0.5"
#endif
#setifnotgiven errthick = 0.5
#setifnotgiven errunder = no
#setifnotgiven erroneway = @errunder
#setifnotgiven erronly = no
#setifnotgiven vals = ""
#setifnotgiven y2 = ""
#setifnotgiven err2 = ""
#setifnotgiven color2 = "powderblue"
#setifnotgiven errcolor2 = black
#setifnotgiven name = "#usefname"
#setifnotgiven name2 = "#usefname"
#setifnotgiven legend = "min+0.5 max+0.5"
#setifnotgiven sep = 0.15
#setifnotgiven outline = no
#setifnotgiven curve = ""
#setifnotgiven order = 5
#setifnotgiven crossover = ""
//// load standard parms..
#include $chunk_setstd
//// read data..
#include $chunk_read
//// required vars..
#musthave x y
//// plotting area..
#include $chunk_area
#if @xnumeric = yes
xautorange: datafield=@x incmult=2.0 nearest=@xnearest
#else
xscaletype: categories
xcategories: datafield=@x
// the following was added 9/2/02 scg
catcompmethod: exact
#endif
#if @yrange = ""
#if @y2 = ""
yautorange: datafields=@y,@err combomode=hilo incmult=2.0 nearest=@ynearest
#else
yautorange: datafields=@y,@y2 incmult=2.0 nearest=@ynearest
#endif
//#elseif @yrange = 0
#elseif $ntoken( 2, @yrange ) = ""
#if @y2 = ""
yautorange: datafields=@y,@err combomode=hilo incmult=2.0 mininit=@yrange nearest=@ynearest
#else
yautorange: datafields=@y,@y2 incmult=2.0 mininit=@yrange nearest=@ynearest
#endif
#else
yrange: @yrange
#endif
//// X axis..
#include $chunk_xaxis
stubcull: yes
#if @xnumeric = yes
stubs: inc @xinc
#else
stubs: usecategories
#endif
//// Y axis..
#include $chunk_yaxis
stubcull: yes
//// title..
#include $chunk_title
//// user pre-plot include..
#if @include1 != ""
#include @include1
#endif
// optional curve behind first bar set
#if @curve != ""
#proc curvefit
xfield: @x
yfield: @y
order: @order
#if @curve = yes
linedetails: color=pink width=0.5
#else
linedetails: @curve
#endif
#endif
//// begin 1st bar set ////
#if @y2 != ""
#proc catslide
axis: x
amount: -@sep
#endif
//// do bar graph
#if @erronly != "yes"
#proc bars
locfield: @x
lenfield: @y
color: @color
outline: @outline
#if @barwidth = line
thinbarline: color=@color
#else
#ifspec barwidth
#endif
#ifspec vals showvalues
legendlabel: @name
#ifspec crossover
#ifspec clickmapurl
#ifspec clickmaplabel
#ifspec ptselect select
#endif
//// do error bars
#if @err != ""
#proc bars
locfield: @x
lenfield: @y
#if @erroneway = yes
errbarfield: 0 @err
#else
errbarfield: @err
#endif
thinbarline: color=@errcolor width=@errthick
tails: @errwidth
truncate: yes
#if @erronly = yes
legendlabel: @name
#endif
#ifspec ptselect select
#endif
//// data points..
#if @erronly = yes
#proc scatterplot
xfield: @x
yfield: @y
#set TICLEN = $arith(@errwidth*0.5)
linelen: 0.02
linedetails: color=@errcolor width=2
#ifspec ptselect select
#endif
//// begin 2nd bar set ////
#if @y2 != ""
#proc catslide
axis: x
amount: @sep
//// bar graph..
#if @erronly != "yes"
#proc bars
locfield: @x
lenfield: @y2
color: @color2
outline: @outline
#ifspec barwidth
#ifspec vals showvalues
legendlabel: @name2
#ifspec crossover
#ifspec clickmapurl
#ifspec clickmaplabel
#ifspec ptselect2 select
#endif
//// err bars over..
#if @err != ""
#proc bars
locfield: @x
lenfield: @y2
#if @erroneway = yes
errbarfield: 0 @err2
#else
errbarfield: @err2
#endif
thinbarline: color=@errcolor2 width=@errthick
tails: @errwidth
truncate: yes
#if @erronly = yes
legendlabel: @name2
#endif
#ifspec ptselect2 select
#endif
//// data points
#if @erronly = yes
#proc scatterplot
xfield: @x
yfield: @y2
#set TICLEN = $arith(@errwidth*0.5)
linelen: 0.02
linedetails: color=@errcolor2 width=2
#ifspec ptselect2 select
#endif
#endif
//// crossover line..
#if @crossover != ""
#proc line
linedetails: width=0.5
points: min @crossover(s) max @crossover(s)
#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