История изменений
Исправление MKuznetsov, (текущая версия) :
в продолжении предложения про tcl :-)
#!/usr/bin/tclsh
package require Tk
set input "data.xy"
set output "data.ps"
set width 640
set height 480
proc readxy { name } {
set chan [ open $name "r" ]
set result [ read $chan ]
close $chan
set result
}
set series [ readxy "data.xy" ]
set minx [ set maxx [ lindex $series 0 ] ]
set miny [ set maxy [ lindex $series 1 ] ]
foreach {x y} $series {
if { $minx > $x } {
set minx $x
}
if { $maxx < $x } {
set maxx $x
}
if { $miny > $y } {
set miny $y
}
if { $maxy < $y } {
set maxy $y
}
}
set dy [expr double($height)/($maxy-$miny)]
set dx [expr double($width)/($maxx-$minx)]
canvas .plot -width $width -height $height
pack .plot
set num 0
foreach { x0 y0 } $series {
if { $num != 0 } {
.plot create line [expr ($x0-$minx)*$dx] [expr $height-($y0-$miny)*$dy ] [expr ($x1-$minx)*$dx] [expr $height-($y1-$miny)*$dy ]
}
incr num
set x1 $x0
set y1 $y0
}
update
set s [ .plot postscript ]
#optional
tkwait window .
set f [ open $output "w" ]
puts -nonewline $f $s
close $f
exit 0
обработку ошибок и рисование осей сделать по вкусу :-)
ps чуток времени и 60 строк кода, а то вы с ынтерпрайзной java ещё долго возиться будете
Исходная версия MKuznetsov, :
в продолжении предложения про tcl :-)
#!/usr/bin/tclsh
package require Tk
set input "data.xy"
set output "data.ps"
set width 640
set height 480
proc readxy { name } {
set chan [ open $name "r" ]
set result [ read $chan ]
close $chan
set result
}
set series [ readxy "data.xy" ]
set minx [ set maxx [ lindex $series 0 ] ]
set miny [ set maxy [ lindex $series 1 ] ]
foreach {x y} $series {
if { $minx > $x } {
set minx $x
}
if { $maxx < $x } {
set maxx $x
}
if { $miny > $y } {
set miny $y
}
if { $maxy < $y } {
set maxy $y
}
}
set dy [expr double($height)/($maxy-$miny)]
set dx [expr double($width)/($maxx-$minx)]
canvas .plot -width $width -height $height
pack .plot
set num 0
foreach { x0 y0 } $series {
if { $num != 0 } {
.plot create line [expr ($x0-$minx)*$dx] [expr $height-($y0-$miny)*$dy ] [expr ($x1-$minx)*$dx] [expr $height-($y1-$miny)*$dy ]
}
incr num
set x1 $x0
set y1 $y0
}
update
set s [ .plot postscript ]
#optional
tkwait window .
set f [ open $output "w" ]
puts -nonewline $f $s
close $f
exit 0
[/tcl]
обработку ошибок и рисование осей сделать по вкусу :-)
ps чуток времени и 60 строк кода, а то вы с ынтерпрайзной java ещё долго возиться будете