File: gnuplot.pl

package info (click to toggle)
ns2 2.35%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 78,796 kB
  • sloc: cpp: 172,923; tcl: 107,130; perl: 6,391; sh: 6,143; ansic: 5,846; makefile: 816; awk: 525; csh: 355
file content (92 lines) | stat: -rw-r--r-- 2,475 bytes parent folder | download | duplicates (8)
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;