gnuplot.pl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. $file = '';
  2. sub plotPreamble {
  3.     my($OUT, $title, $xlabel, $xrange, $ylabel, $yrange) = @_;
  4. #    if (! defined($ENV{'DISPLAY'})) {
  5. # print $OUT 'set terminal dumb', "n";
  6. # print $OUT 'set output "/dev/null"', "n";
  7. #    }
  8.     $file = $title;
  9.     print $OUT "set title  '$title'   n";
  10.     print $OUT "set xlabel '$xlabel'  n";
  11.     print $OUT "set ylabel '$ylabel'  n";
  12.     print $OUT "set xrange [$xrange]  n" if ($xrange);
  13.     print $OUT "set yrange [$yrange]  n" if ($yrange);
  14. }
  15. $plotcmd = 'plot';
  16. sub plot {
  17.     my($OUT, $append, $file, $ins, @vals) = @_;
  18.     if ($#vals >= $[) {
  19. open(DOUT, ($append ? ">>$file" : ">$file"));
  20. print DOUT @vals;
  21. close(DOUT);
  22. print $OUT "$plotcmd '$file' $insn";
  23. $plotcmd = 'replot';
  24.     }
  25. }
  26. $labelid = '000';
  27. sub setLabel {
  28.     my($OUT, $tag, $label, $x, $y, $pos) = @_;
  29.     print $OUT "set label ${labelid}$tag '$label' at $x, $y $posn";
  30.     ++$labelid;
  31. }
  32. sub setArrow {
  33.     my($OUT, $tag, $x1, $y1, $x2, $y2) = @_;
  34.     print $OUT "set arrow ${labelid}$tag from $x1, $y1 to $x2, $y2n";
  35.     ++$labelid;
  36. }
  37. $ffirst = 0;
  38. sub plotFails {
  39.     my($OUT, $minY, $maxY, $tag, @vals) = @_;
  40.     if ($#vals >= $[) {
  41. my($range, $start, $tick1, $tick2, @nvals);
  42. $range = $maxY - $minY;
  43. $start = $maxY - $range * 0.1;
  44. $tick1 = $maxY - $range * 0.2;
  45. $tick2 = $maxY - $range * 0.22;
  46. foreach $i (@vals) {
  47.     push(@nvals, "$i $minYn", "$i $maxYn");
  48.     setArrow($OUT, $tag, $i, $start, $i, $tick1);
  49.     setArrow($OUT, $tag, $i, $start, $i, $tick2);
  50.     setLabel($OUT, $tag, "<$tag>",  $i - 0.11, $tick2, 'right');
  51. }
  52. plot($OUT, $ffirst, 'link-fails', 'w impulse', @nvals);
  53. $ffirst = 1;
  54.     }
  55. }
  56. $rfirst = 0;
  57. sub plotRecov {
  58.     my($OUT, $minY, $maxY, $tag, @vals) = @_;
  59.     if ($#vals >= $[) {
  60. my($range, $start, $tick1, $tick2, @nvals);
  61. $range = $maxY - $minY;
  62. $start = $maxY - $range * 0.3;
  63. $tick1 = $maxY - $range * 0.1;
  64. $tick2 = $maxY - $range * 0.12;
  65. foreach $i (@vals) {
  66.     push(@nvals, "$i $minYn", "$i $maxYn");
  67.     setArrow($OUT, $tag, $i, $start, $i, $tick1);
  68.     setArrow($OUT, $tag, $i, $start, $i, $tick2);
  69.     setLabel($OUT, $tag, "<$tag>", $i + 0.11, $tick1, 'left');
  70. }
  71. plot($OUT, $rfirst, 'link-recovery', 'w impulse', @nvals);
  72. $rfirst = 1;
  73.     }
  74. }
  75. sub plotPostamble {
  76.     my($OUT) = shift @_;
  77. #    print $OUT "set terminal postscriptn";
  78. #    print $OUT "set output '${file}.ps'n";
  79. #    print $OUT "replotn";
  80. #    print $OUT "set outputn";
  81.     print $OUT "exitn";
  82.     close(OUT);
  83. }
  84. 1;