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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
$file = '';
sub plotPreamble {
my($OUT, $title, $xlabel, $xrange, $ylabel, $yrange) = @_;
# if (! defined($ENV{'DISPLAY'})) {
# print $OUT 'set terminal dumb', "\n";
# print $OUT 'set output "/dev/null"', "\n";
# }
$file = $title;
print $OUT "set title '$title' \n";
print $OUT "set xlabel '$xlabel' \n";
print $OUT "set ylabel '$ylabel' \n";
print $OUT "set xrange [$xrange] \n" if ($xrange);
print $OUT "set yrange [$yrange] \n" if ($yrange);
}
$plotcmd = 'plot';
sub plot {
my($OUT, $append, $file, $ins, @vals) = @_;
if ($#vals >= $[) {
open(DOUT, ($append ? ">>$file" : ">$file"));
print DOUT @vals;
close(DOUT);
print $OUT "$plotcmd '$file' $ins\n";
$plotcmd = 'replot';
}
}
$labelid = '000';
sub setLabel {
my($OUT, $tag, $label, $x, $y, $pos) = @_;
print $OUT "set label ${labelid}$tag '$label' at $x, $y $pos\n";
++$labelid;
}
sub setArrow {
my($OUT, $tag, $x1, $y1, $x2, $y2) = @_;
print $OUT "set arrow ${labelid}$tag from $x1, $y1 to $x2, $y2\n";
++$labelid;
}
$ffirst = 0;
sub plotFails {
my($OUT, $minY, $maxY, $tag, @vals) = @_;
if ($#vals >= $[) {
my($range, $start, $tick1, $tick2, @nvals);
$range = $maxY - $minY;
$start = $maxY - $range * 0.1;
$tick1 = $maxY - $range * 0.2;
$tick2 = $maxY - $range * 0.22;
foreach $i (@vals) {
push(@nvals, "$i $minY\n", "$i $maxY\n");
setArrow($OUT, $tag, $i, $start, $i, $tick1);
setArrow($OUT, $tag, $i, $start, $i, $tick2);
setLabel($OUT, $tag, "<$tag>", $i - 0.11, $tick2, 'right');
}
plot($OUT, $ffirst, 'link-fails', 'w impulse', @nvals);
$ffirst = 1;
}
}
$rfirst = 0;
sub plotRecov {
my($OUT, $minY, $maxY, $tag, @vals) = @_;
if ($#vals >= $[) {
my($range, $start, $tick1, $tick2, @nvals);
$range = $maxY - $minY;
$start = $maxY - $range * 0.3;
$tick1 = $maxY - $range * 0.1;
$tick2 = $maxY - $range * 0.12;
foreach $i (@vals) {
push(@nvals, "$i $minY\n", "$i $maxY\n");
setArrow($OUT, $tag, $i, $start, $i, $tick1);
setArrow($OUT, $tag, $i, $start, $i, $tick2);
setLabel($OUT, $tag, "<$tag>", $i + 0.11, $tick1, 'left');
}
plot($OUT, $rfirst, 'link-recovery', 'w impulse', @nvals);
$rfirst = 1;
}
}
sub plotPostamble {
my($OUT) = shift @_;
# print $OUT "set terminal postscript\n";
# print $OUT "set output '${file}.ps'\n";
# print $OUT "replot\n";
# print $OUT "set output\n";
print $OUT "exit\n";
close(OUT);
}
1;
|