diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2019-08-02 20:01:55 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2019-08-02 20:01:55 (GMT) |
commit | 59d7227509fd4c110bc78be98dc485c6ac939d05 (patch) | |
tree | 94cf9983355fd656a071c89584d6c262699ee0db /ds9/library/plot.tcl | |
parent | 302cb76db41b80c4f1736f0c57d5efa129fb9d44 (diff) | |
download | blt-59d7227509fd4c110bc78be98dc485c6ac939d05.zip blt-59d7227509fd4c110bc78be98dc485c6ac939d05.tar.gz blt-59d7227509fd4c110bc78be98dc485c6ac939d05.tar.bz2 |
support multiple graphs per plot
Diffstat (limited to 'ds9/library/plot.tcl')
-rw-r--r-- | ds9/library/plot.tcl | 110 |
1 files changed, 85 insertions, 25 deletions
diff --git a/ds9/library/plot.tcl b/ds9/library/plot.tcl index efd0c03..d0b905e 100644 --- a/ds9/library/plot.tcl +++ b/ds9/library/plot.tcl @@ -652,6 +652,63 @@ proc PlotLayoutCanvas {varname} { update idletasks } +proc PlotCalcMargins {varname rpixname lpixname} { + upvar $rpixname rpix + upvar $lpixname lpix + upvar #0 $varname var + global $varname + + set rpix 0 + set lpix 0 + + set lchar 0 + set rchar 0 + set ytitle 0 + foreach cc $var(graphs) { + # y axis title + if {$var($cc,axis,y,title) !={}} { + set ytitle 1 + } + + # legend + if {$var($cc,legend)} { + # find max legend dataset name width + set nc 0 + foreach nn $var($cc,dss) { + set nr [string length $var($cc,$nn,name)] + if {$nr > $nc} { + set nc $nr + } + } + switch $var($cc,legend,position) { + top {} + bottom {} + right { + if {$nc > $rchar} { + set rchar $nc + } + } + left { + if {$nc > $lchar} { + set lchar $nc + } + } + plotarea {} + } + } + } + if {$rchar>0} { + set rpix [expr $rpix + int(($var(legend,title,size)*4 + $var(legend,font,size)*$rchar)*.75)] + } + if {$lchar>0} { + set lpix [expr $lpix + int(($var(legend,title,size)*4 + $var(legend,font,size)*$lchar)*.75)] + } + + set rpix [expr 10 + $rpix] + set lpix [expr 8*$var(axis,font,size) + $ytitle*$var(axis,title,size) + $lpix] +} + + # procs # used by backup proc PlotUpdateCanvas {varname} { @@ -697,7 +754,18 @@ proc PlotUpdateCanvas {varname} { set var(layout,axis,x,flip) $var($first,axis,x,flip) } } - + + set right 0 + set left 0 + switch $var(layout) { + grid - + row - + column {} + strip { + PlotCalcMargins $varname right left + } + } + foreach cc $var(graphs) { $var($cc,graph) configure -plotpadx 0 -plotpady 0 \ -font "{$ds9($var(graph,title,family))} $var(graph,title,size) $var(graph,title,weight) $var(graph,title,slant)" \ @@ -739,30 +807,6 @@ proc PlotUpdateCanvas {varname} { set var($cc,axis,x,manage) 0 } -# set left [expr 8*$var(axis,font,size) + $var(axis,title,size)] -# set right 10 - set left 100 - set right 100 - - if {$var($first,legend) &&0} { - # find max legend dataset name width - set nc 0 - foreach nn $var($first,dss) { - set nr [string length $var($first,$nn,name)] - if {$nr > $nc} { - set nc $nr - } - } - set ll [expr $var(legend,title,size)*4 + $var(legend,font,size)*$nc] - switch $var($first,legend,position) { - top {} - bottom {} - right {set right [expr $right + $ll]} - left {set left [expr $left + $ll]} - plotarea {} - } - } - $var($cc,graph) configure \ -leftmargin $left -rightmargin $right \ -borderwidth 0 \ @@ -970,6 +1014,22 @@ proc PlotTitle {varname title xaxis yaxis} { PlotChangeTitle $varname } +proc PlotDataSetName {varname name} { + upvar #0 $varname var + global $varname + + $var(mb).graph.select entryconfig "$var(graph,ds,name)" -label "$name" + set var(graph,ds,name) $name + $var(graph,proc,updateelement) $varname + + switch $var(layout) { + grid - + row - + column {} + strip {PlotUpdateCanvas $varname} + } +} + proc PlotBackup {ch dir} { global iap |