// 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
//// STACK - do a stacked bar graph
//// load stack-specific parms..
#setifnotgiven xnumeric = ""
#setifnotgiven y2 = ""
#setifnotgiven y3 = ""
#setifnotgiven y4 = ""
#setifnotgiven color = orange
#setifnotgiven color2 = "powderblue"
#setifnotgiven color3 = "dullyellow"
#setifnotgiven color4 = "drabgreen"
#setifnotgiven name = "#usefname"
#setifnotgiven name2 = "#usefname"
#setifnotgiven name3 = "#usefname"
#setifnotgiven name4 = "#usefname"
#setifnotgiven outline = no
#setifnotgiven reverseleg = no
#setifnotgiven stackarea = no
#if @CM_UNITS = 1
#setifnotgiven legend = "min+1.25 max+1.25"
#else
#setifnotgiven legend = "min+0.5 max+0.5"
#endif
//// load standard parms..
#include $chunk_setstd
//// read data..
#set context = stack
#include $chunk_read
//// plot area..
#include $chunk_area
#if @xnumeric = yes
#set incmult = 2.0
#if @stackarea = yes
#set incmult = 1.0
#endif
#write stderr
incmult = @incmult
#endwrite
xautorange: datafield=@x incmult=@incmult nearest=@xnearest
#else
xscaletype: categories
xcategories: datafield=@x
// following added 9/2/02 scg
catcompmethod: exact
#endif
#if @stackarea = yes
#set combomode = normal
#else
#set combomode = stack
#endif
#if @yrange = ""
yautorange: datafields=@y,@y2,@y3,@y4 combomode=@combomode incmult=2.0 nearest=@ynearest
//#elseif @yrange = 0
#elseif $ntoken( 2, @yrange ) = ""
yautorange: datafields=@y,@y2,@y3,@y4 combomode=@combomode incmult=2.0 mininit=@yrange nearest=@ynearest
#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
#if @stackarea = yes
#if @name = "#usefname"
#set name = "Tier 1"
#set name2 = "Tier 2"
#set name3 = "Tier 3"
#set name4 = "Tier 4"
#write stderr
Warning: With stackarea, legend labels must be specified (name= .. name2=..)
#endwrite
#endif
#if @y4 != ""
#proc lineplot
xfield: @x
yfield: @y4
fill: @color4
legendlabel: @name4
#endif
#if @y3 != ""
#proc lineplot
xfield: @x
yfield: @y3
fill: @color3
legendlabel: @name3
#endif
#if @y2 != ""
#proc lineplot
xfield: @x
yfield: @y2
fill: @color2
legendlabel: @name2
#endif
#proc lineplot
xfield: @x
yfield: @y
fill: @color
legendlabel: @name
#else
//// do 1st level bars..
#proc bars
locfield: @x
lenfield: @y
color: @color
outline: @outline
#ifspec barwidth
legendlabel: @name
#ifspec ptselect select
//// 2nd level bars..
#if @y2 != ""
#proc bars
locfield: @x
lenfield: @y2
stackfields: *
color: @color2
outline: @outline
#ifspec barwidth
legendlabel: @name2
#ifspec ptselect2 select
#endif
//// 3rd level bars..
#if @y3 != ""
#proc bars
locfield: @x
lenfield: @y3
stackfields: *
color: @color3
outline: @outline
#ifspec barwidth
legendlabel: @name3
#ifspec ptselect3 select
#endif
//// 4th level bars..
#if @y4 != ""
#proc bars
locfield: @x
lenfield: @y4
stackfields: *
color: @color4
outline: @outline
#ifspec barwidth
legendlabel: @name4
#ifspec ptselect4 select
#endif
#endif
//// legend..
#if @name != "#usefname" || @header = yes
#proc legend
location: @legend
reverseorder: @reverseleg
#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