LINUX.ORG.RU

История изменений

Исправление 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 ещё долго возиться будете