Changeset 2518 for branches/blt4/gui


Ignore:
Timestamp:
Sep 15, 2011, 4:23:27 PM (13 years ago)
Author:
gah
Message:

update to histogram

Location:
branches/blt4/gui/scripts
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/blt4/gui/scripts/histogram.tcl

    r2300 r2518  
    351351    set xydata [$_hist get ${comp}.xy]
    352352    if { $xydata != "" } {
    353         # Fast way of parsing x/y pairs.  Set a temporary vector using the
    354         # entire as a list of values (newlines treated as whitespace). 
    355         # Then split the vector into the x and y vectors required.
    356         set tmp [blt::vector create \#auto]
    357         $tmp set $xydata
    358         $tmp split $_xvalues($comp) $_yvalues($comp)
    359         blt::vector destroy $tmp
    360         $_widths($comp) set {}
    361         set _comp2hist($comp) [list $_xvalues($comp) $_yvalues($comp)]
    362         return
    363     }
    364     set xhwdata [$_hist get ${comp}.xhw]
    365     if { $xhwdata != "" } {
    366         # Slow way of parsing x, h, and w values.  The third value is
    367         # optional to can't simply load the values into a vector.
    368         foreach line [split $xhwdata \n] {
    369             set n [scan $line {%s %s %s} x h w]
    370             if { $n == 2 } {
    371                 $_xvalues($comp) append $x
    372                 $_yvalues($comp) append $h
    373             } elseif { $n == 3 } {
    374                 $_xvalues($comp) append $x
    375                 $_yvalues($comp) append $h
    376                 $_widths($comp) append $w
    377             }
    378         }
    379         # FIXME:  There must be a width specified for each bin location.
    380         #         If this isn't true, we default to uniform widths
    381         #         (zero-length _widths vector == uniform).
    382         if { [$_xvalues($comp) length] != [$_widths($comp) length] } {
    383             $_widths($comp) set {}
    384         }
    385         set _comp2hist($comp) [list $_xvalues($comp) $_yvalues($comp)]
    386         return
    387     }
    388     set nvdata [$_hist get ${comp}.namevalue]
    389     if { $nvdata != "" } {
    390353        set count 0
    391         foreach line [split $nvdata \n] {
     354        foreach line [split $xydata \n] {
    392355            foreach {name value} $line break
    393356            $_yvalues($comp) append $value
     
    399362        return
    400363    }
     364    set xhwdata [$_hist get ${comp}.xhw]
     365    if { $xhwdata != "" } {
     366        set count 0
     367        foreach line [split $xhwdata \n] {
     368            set n [scan $line {%s %s %s} name h w]
     369            lappend _xlabels($comp) $name
     370            $_xvalues($comp) append $count
     371            $_yvalues($comp) append $h
     372            if { $n == 3 } {
     373                $_widths($comp) append $w
     374            }
     375            incr count
     376        }           
     377        set _comp2hist($comp) [list $_xvalues($comp) $_yvalues($comp)]
     378        return
     379
     380        # FIXME:  There must be a width specified for each bin location.
     381        #         If this isn't true, we default to uniform widths
     382        #         (zero-length _widths vector == uniform).
     383        if { [$_xvalues($comp) length] != [$_widths($comp) length] } {
     384            $_widths($comp) set {}
     385        }
     386        set _comp2hist($comp) [list $_xvalues($comp) $_yvalues($comp)]
     387        return
     388    }
    401389    set xv [$_hist get $comp.xvector]
    402390    set yv [$_hist get $comp.yvector]
    403391    if { $xv != "" && $yv != "" } {
    404392        $_yvalues($comp) set $yv
    405         $_xvalues($comp) set $xv
    406     }
    407     set _comp2hist($comp) [list $xv $yv]
     393        $_xvalues($comp) seq 0 [$yv length]
     394        set _xlabels($comp)
     395    }
     396    set _comp2hist($comp) [list $_xvalues($comp) $_yvalues($comp)]
    408397}
    409398
  • branches/blt4/gui/scripts/histogramresult.tcl

    r2409 r2518  
    2929option add *HistogramResult.height 3i widgetDefault
    3030option add *HistogramResult.gridColor #d9d9d9 widgetDefault
    31 option add *HistogramResult.activeColor blue widgetDefault
     31option add *HistogramResult.activeColor blue2 widgetDefault
    3232option add *HistogramResult.dimColor gray widgetDefault
    3333option add *HistogramResult.controlBackground gray widgetDefault
    3434option add *HistogramResult.font \
    3535    -*-helvetica-medium-r-normal-*-12-* widgetDefault
    36 
    37 option add *HistogramResult.autoColors {
    38     #0000ff #ff0000 #00cc00
    39     #cc00cc #ff9900 #cccc00
    40     #000080 #800000 #006600
    41     #660066 #996600 #666600
    42 }
    43 set autocolors {
    44 #0000cd
    45 #cd0000
    46 #00cd00
    47 #3a5fcd
    48 #cdcd00
    49 #cd1076
    50 #009acd
    51 #00c5cd
    52 #a2b5cd
    53 #7ac5cd
    54 #66cdaa
    55 #a2cd5a
    56 #cd9b9b
    57 #cdba96
    58 #cd3333
    59 #cd6600
    60 #cd8c95
    61 #cd00cd
    62 #9a32cd
    63 #6ca6cd
    64 #9ac0cd
    65 #9bcd9b
    66 #00cd66
    67 #cdc673
    68 #cdad00
    69 #cd5555
    70 #cd853f
    71 #cd7054
    72 #cd5b45
    73 #cd6889
    74 #cd69c9
    75 #551a8b
    76 }
    77 
    78 option add *HistogramResult.autoColors $autocolors widgetDefault
    7936option add *HistogramResult*Balloon*Entry.background white widgetDefault
     37
     38option add *HistogramResult*autoColors {
     39    #3a5fcd
     40    #cdcd00
     41    #cd1076
     42    #0000cd
     43    #cd0000
     44    #00cd00
     45    #009acd
     46    #00c5cd
     47    #a2b5cd
     48    #7ac5cd
     49    #66cdaa
     50    #a2cd5a
     51    #cd9b9b
     52    #cdba96
     53    #cd3333
     54    #cd6600
     55    #cd8c95
     56    #cd00cd
     57    #9a32cd
     58    #6ca6cd
     59    #9ac0cd
     60    #9bcd9b
     61    #00cd66
     62    #cdc673
     63    #cdad00
     64    #cd5555
     65    #cd853f
     66    #cd7054
     67    #cd5b45
     68    #cd6889
     69    #cd69c9
     70    #551a8b
     71} widgetDefault
    8072
    8173itcl::class Rappture::HistogramResult {
     
    8678    itk_option define -dimcolor dimColor DimColor ""
    8779    itk_option define -autocolors autoColors AutoColors ""
     80
    8881    constructor {args} {
    8982        # defined below
     
    651644        }
    652645    }
    653     $g axis configure x
     646   
    654647    #
    655648    # All of the extra axes get mapped to the x2/y2 (top/right)
     
    670663        }
    671664    }
    672    
     665
    673666    foreach axis $all {
    674667        set _axisPopup(format-$axis) "%.6g"
    675        
    676668        $g axis bind $axis <Enter> \
    677669            [itcl::code $this Axis hilite $axis on]
     
    823815itcl::body Rappture::HistogramResult::ResetLimits {} {
    824816    set g $itk_component(plot)
     817
    825818    #
    826819    # HACK ALERT!
     
    920913    }
    921914    set tip ""
     915    set index ""
    922916    if {$state == "at"} {
    923917        set results [$g element closest $x $y -interpolate yes]
     
    957951                append tip "\n$yval$yunits"
    958952                set xval [Axis format x dummy $info(x)]
    959                 append tip " @ $xval$xunits"
     953                append tip " @ $xval"
    960954                set tip [string trim $tip]
     955                set index $info(index)
    961956            }
    962957            set state 1
     
    968963                # for dealing with xy scatter plot
    969964                set elem $info(name)
    970                
    971965                # Some elements are generated dynamically and therefore will
    972966                # not have a dataobj object associated with them.
     
    976970                    foreach {mapx mapy} [GetAxes $_elem2dataobj($elem)] break
    977971                }
    978                
    979972                set tip ""
    980973                set x [$g axis transform $mapx $info(x)]
    981974                set y [$g axis transform $mapy $info(y)]
    982                
    983                 if {[info exists _elem2dataobj($elem)]} {
     975                if { [$g cget -invertxy] } {
     976                    set tmp $x
     977                    set x $y
     978                    set y $tmp
     979                }
     980               if {[info exists _elem2dataobj($elem)]} {
    984981                    set dataobj $_elem2dataobj($elem)
    985982                    set yunits [$dataobj hints yunits]
     
    993990                append tip "\n$yval$yunits"
    994991                set xval [Axis format x dummy $info(x)]
    995                 append tip " @ $xval$xunits"
     992                append tip " @ $xval"
    996993                set tip [string trim $tip]
     994                set index $info(index)
    997995                set state 1
    998996            } else {
     
    10141012            Rappture::Tooltip::tooltip cancel
    10151013        }
    1016         $g element activate $elem
     1014        if { $index != "" } {
     1015            $g element activate $elem $index
     1016            set _hilite(index) $index
     1017        }
    10171018        set _hilite(elem) $elem
    10181019
     
    10561057                    set tipx "-0"
    10571058                } else {
    1058                     set tipx "-[expr {$x-4}]"  ;# move tooltip to the left
     1059                    set tipx "-[expr {$x-20}]"  ;# move tooltip to the left
    10591060                }
    10601061            } else {
     
    10621063                    set tipx "+0"
    10631064                } else {
    1064                     set tipx "+[expr {$x+4}]"  ;# move tooltip to the right
     1065                    set tipx "+[expr {$x+20}]"  ;# move tooltip to the right
    10651066                }
    10661067            }
     
    10691070                    set tipy "-0"
    10701071                } else {
    1071                     set tipy "-[expr {$y-4}]"  ;# move tooltip to the top
     1072                    set tipy "-[expr {$y-20}]"  ;# move tooltip to the top
    10721073                }
    10731074            } else {
     
    10751076                    set tipy "+0"
    10761077                } else {
    1077                     set tipy "+[expr {$y+4}]"  ;# move tooltip to the bottom
     1078                    set tipy "+[expr {$y+20}]"  ;# move tooltip to the bottom
    10781079                }
    10791080            }
     
    11661167                error "wrong # args: should be \"Axis click axis x y\""
    11671168            }
    1168             set axis [lindex $args 0]
    1169             set x [lindex $args 1]
    1170             set y [lindex $args 2]
     1169            foreach { axis x y } $args break
    11711170            set g $itk_component(plot)
     1171            if { [$g cget -invertxy] } {
     1172                set tmp $x
     1173                set x $y
     1174                set y $tmp
     1175            }
    11721176
    11731177            set _axis(moved) 0
     
    11861190                return  ;# must have skipped click event -- ignore
    11871191            }
    1188             set axis [lindex $args 0]
    1189             set x [lindex $args 1]
    1190             set y [lindex $args 2]
     1192            foreach { axis x y } $args break
    11911193            set g $itk_component(plot)
     1194            if { [$g cget -invertxy] } {
     1195                set tmp $x
     1196                set x $y
     1197                set y $tmp
     1198            }
    11921199
    11931200            if {[info exists _axis(click-x)] && [info exists _axis(click-y)]} {
     
    12441251                return  ;# must have skipped click event -- ignore
    12451252            }
    1246             set axis [lindex $args 0]
    1247             set x [lindex $args 1]
    1248             set y [lindex $args 2]
     1253            foreach { axis x y } $args break
     1254            set g $itk_component(plot)
     1255            if { [$g cget -invertxy] } {
     1256                set tmp $x
     1257                set x $y
     1258                set y $tmp
     1259            }
    12491260
    12501261            if {!$_axis(moved)} {
     
    14541465            set axis [lindex $args 0]
    14551466            set value [lindex $args 2]
    1456 
     1467            if { $axis == "x" } {
     1468                return [FormatLabels $itk_component(plot) $value]
     1469            }
    14571470            if {[$itk_component(plot) axis cget $axis -logscale]} {
    14581471                set fmt "%.6g"
     
    16321645        return $_xlabels($index)
    16331646    }
    1634     puts stderr "value=$value index=$index"
    1635     parray _xlabels
    1636     return $value
    1637 }
     1647    return " "
     1648}
Note: See TracChangeset for help on using the changeset viewer.