[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. ======tcl 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 [list BarAction %W %x %y press] bind $c [list BarAction %W %x %y move] bind $c [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 ====== <>Plotting