1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
sub plotPreamble {
my($OUT, $title, $xlabel, $xrange, $ylabel, $yrange) = @_;
# if (defined($ENV{'DISPLAY'})) {
# writeln('set terminal x11');
# } else {
# writeln('set terminal postscript');
# writeln('set output "', $file, '.ps"');
# }
print $OUT <<EOH
TitleText: $title
Device: Postscript
BoundBox: true
Ticks: true
Markers: true
XUnitText: $xlabel
YUnitText: $ylabel
EOH
;
print $OUT "NoLines: true\n" if (defined($opt_q));
}
sub plot {
my($OUT, $append, $file, $ins, @vals) = @_;
if ($ins =~ /plot\s+(\d+)\s*/) {
$point = shift @vals;
$max = $1 - 1;
foreach $i (1..$max) {
plot($OUT, $append, "skip-$i", '', $point);
}
plot($OUT, $append, 'skip-' . ++$max, '', $point) if ($#vals < $[);
}
print $OUT "\n\"$file\n", @vals if ($#vals >= $[);
}
%linkFails = %linkRecov = ();
sub plotFails {
my($OUT, $minY, $maxY, $tag, @vals) = @_;
if ($#vals >= $[) {
foreach $i (@vals) {
push(@{$linkFails{$tag}}, "move $i $minY\n", "draw $i $maxY\n");
}
}
}
sub plotRecov {
my($OUT, $minY, $maxY, $tag, @vals) = @_;
if ($#vals >= $[) {
foreach $i (@vals) {
push(@{$linkRecov{$tag}}, "move $i $minY\n", "draw $i $maxY\n");
}
}
}
sub plotPostamble {
my($OUT) = shift @_;
print $OUT "Nolines: true\n";
foreach $i (keys %linkFails) {
plot($OUT, 0, 'link ' . $i . ' fail', '', @{$linkFails{$i}});
}
foreach $i (keys %linkRecov) {
plot($OUT, 0, 'link ' . $i . ' recovery', '', @{$linkRecov{$i}});
}
close(OUT);
}
1;
|