From 4e7a5cd12016fd0247f3d8278ed5406dd9862a2e Mon Sep 17 00:00:00 2001 From: hjp Date: Mon, 19 Apr 2010 13:09:09 +0000 Subject: [PATCH] added method and option yrange. fixed postscript test (probably broken because of new gnuplot version) --- TimeSeries.pm | 19 ++++++++++++++++++- t/3missing.t | 16 +++++++--------- tsplot | 5 +++++ 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/TimeSeries.pm b/TimeSeries.pm index 9311873..bb45393 100644 --- a/TimeSeries.pm +++ b/TimeSeries.pm @@ -33,7 +33,7 @@ use HTTP::Date qw(parse_date); use Time::Local qw(timegm_nocheck); use POSIX qw(strftime); -our $VERSION = do { my @r=(q$Revision: 1.20 $=~/\d+/g);sprintf "%d."."%02d"x$#r,@r}; +our $VERSION = do { my @r=(q$Revision: 1.21 $=~/\d+/g);sprintf "%d."."%02d"x$#r,@r}; our $debug; @@ -276,6 +276,22 @@ sub finalresolution { } +=head2 yrange([$ymin, $ymax]) + +Set the y range. If either $ymin or $ymax is undef it is automatically +determined. + +=cut + +sub yrange { + my ($self, $ymin, $ymax) = @_; + if (@_ == 3) { + $self->{yrange} = [ $ymin, $ymax ]; + } + return $self->{yrange} ? @{ $self->{yrange} } : (); +} + + =head2 dstcorr $time [, $period] @@ -358,6 +374,7 @@ sub plot { print $ctlfh "set log y\n" if ($self->{log_y}); print $ctlfh "set key $self->{legend_position}\n" if ($self->{legend_position}); print $ctlfh "set datafile missing '?'\n"; + print $ctlfh "set yrange [", $self->{yrange}[0] // "*", ":", $self->{yrange}[1] // "*", "]\n"; my $firsttime = $self->{data}[0][0]; my $lasttime = $self->{data}[$#{$self->{data}}][0]; diff --git a/t/3missing.t b/t/3missing.t index d5ad70c..3634e21 100644 --- a/t/3missing.t +++ b/t/3missing.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 3; +use Test::More tests => 4; BEGIN { use_ok( 'TimeSeries' ); } @@ -25,7 +25,7 @@ my $p = $ts->plot(); # open(my $fh, '>:raw', "t/3missing.ps"); # print $fh $p; # close($fh); -my $t = " +my $t1 = " LT0 6607 4807 M 303 0 V @@ -35,17 +35,15 @@ LT0 4823 2940 M 5927 4920 L 7030 960 L -1.000 UL -LTb -410 960 M +"; + +my $t2 = " 6620 0 V 0 3960 V -6620 0 V -410 960 L -1.000 UP -stroke "; -ok(index($p, $t) != -1, 'postscript output looks ok'); +ok(index($p, $t1) != -1, 'postscript output contains line'); +ok(index($p, $t2) != -1, 'postscript output contains box'); #vim:tw=0 diff --git a/tsplot b/tsplot index 75acb7c..9d3b38f 100755 --- a/tsplot +++ b/tsplot @@ -17,6 +17,7 @@ tsplotv [--style style] [--time_t] [--tsv] +[--yrange min max] [file ...] =head1 DESCRIPTION @@ -52,13 +53,16 @@ my $time_t =0; my $style = "lines"; my $tsv = 0; my $stacked = 0; +my @yrange; my $keeptempfiles; + GetOptions('output_format|output-format=s' => \$output_format, 'log_y|log-y' => \$log_y, 'time_t' => \$time_t, 'style:s' => \$style, 'tsv' => \$tsv, 'stacked' => \$stacked, + 'yrange:s{2}' => \@yrange, 'keeptempfiles' => \$keeptempfiles, ) or pod2usage(verbose => 0); @@ -88,6 +92,7 @@ while (<>) { $ts->log_y($log_y); $ts->style($style); $ts->stacked($stacked); +$ts->yrange(@yrange); my $g = $ts->plot(); print $g