Data selection in plotchart

hae Having an xyplot it would be great to select data by means of a bars in order to export the data. This is my first start.

lappend auto_path [file join  [pwd] plotchart]

package require Plotchart

set TMP [list 24.3 25.1 24.6 25.3 24.8 25.01 25.2 25.1 25 \
              27.3 35.1 50   70   85   89    93   95   96 97 97.5 98 99.2 99.5 99.6 99.7 99.8 99.9 100
        ]
        
set Data(Bar,Selected) ""
set Data(Bar,Pixels) ""
set Data(Marker,Start) ""
set Data(Marker,End) ""
set Data(Sel,Start) ""
set Data(Sel,End) ""

set Data(Plot) ""
        
proc InitUI { } {
    variable Data
    canvas .c -background white -width 1000 -height 200

    entry .start -textvariable Data(Sel,Start)
    entry .end   -textvariable Data(Sel,End)
    
    grid .c                      -row 0 -column 0 -sticky nsew -columnspan 4 -pady {0 3}
    grid [label .l1 -text Start] -row 1 -column 0
    grid .start                  -row 1 -column 1
    grid [label .l2 -text End]   -row 1 -column 2
    grid .end                    -row 1 -column 3


    #
    # Create the plot with its x- and y-axes
    #
    set p [::Plotchart::createXYPlot .c {0.0 2000.0 250.0} {0.0 100.0 20.0}]
    set Data(Plot) $p

    $p title "Temperatur TMP \[°C\]"
    
    set Data(Bar,List) ""
    set Data(Marker,Start) [$p object line series1    5   0     5 100 -dash {2 2} -fill green -tags Bar]
    set Data(Marker,End)   [$p object line series1 2000   0  2000 100 -dash {2 2} -fill   red -tags Bar]
    lappend Data(Bar,List) $Data(Marker,Start) $Data(Marker,End)
    
}

proc DrawPlot { YData } {
    variable Data
    
    set p $Data(Plot)
    set X 0
    foreach Y $YData {
        $p plot series1 $X $Y
        incr X
    }
    
    # set c [$p canvas]
    set c .c
    bind $c <ButtonPress-1>   [list BarAction %W %x %y press]
    bind $c <B1-Motion>       [list BarAction %W %x %y move]
    bind $c <ButtonRelease-1> [list BarAction %W %x %y release]
}

proc BarAction { w x y action args } {
    variable Data
    puts [info level 0]
    
    switch $action {
        press {
            set Closest [$w find closest $x $y]
            puts "Closest: $Closest"
            
            if { $Closest ni $Data(Bar,List) } {
                puts "Not a Bar! Must be a line segment."
                return
            }
        
            set Data(Bar,Selected) $Closest
            set Pixels [Plotchart::coordsToPixel $w 10 101]
            lassign $Pixels XPixel YPixel
            set Data(Bar,Origin) [list $x $YPixel]
            set Data(Bar,Pixels) [list $x $y]
        }
        
        move {

            set Coords [Plotchart::pixelToCoords $w $x $y]
            lassign $Coords X Y
            #puts "Coords: $Coords"

            if { $Data(Bar,Selected) eq $Data(Marker,Start) } {
                set Data(Sel,Start) [format {%.2f} $X]
            } else {
                set Data(Sel,End) [format {%.2f} $X]
            }
            if { $Data(Bar,Selected) eq "" } {
                return
            }
            
            lassign $Data(Bar,Origin) OriginX OriginY
            $w moveto $Data(Bar,Selected) $x $OriginY
            puts "move $x $OriginY"
        }
        
        release {

            set Data(Bar,Selected) ""
        }
        
        default {
        }
    }
}

InitUI
DrawPlot $TMP