Compare commits

..

80 Commits
v1.29 ... v1.45

Author SHA1 Message Date
Dima Kogan
9cc67cdaeb new release 2017-10-29 14:02:46 -07:00
Dima Kogan
07a109b09a zsh completion: --hardcopy suggests filenames too
Generally --hardcopy should produce new files, but the completion is still
useful.
2017-10-11 18:42:17 -07:00
Dima Kogan
7b3040ecc9 --image now produces a nicer legend: just the filename 2017-10-11 18:32:31 -07:00
Dima Kogan
b59137c255 zsh completions: --image suggests files, --hardcopy does NOT suggest files
--image reads existing files, so it should ask for existing files

--hardcopy creates new files, so it shouldn't suggest existing files
2017-09-30 23:16:41 -07:00
Dima Kogan
fec440c8b3 --curvestyle now overrides --curvestyleall
This is how it was supposed to work, but apparently it didn't work this way:
--curvestyleall options were active for ALL the curves
2017-09-30 22:53:43 -07:00
Dima Kogan
5758865246 custom settings are now set AFTER all our internal ones
Thus the custom settings take precedence
2017-09-30 19:16:54 -07:00
Dima Kogan
6f091d1cf2 The version is now treated as a string not as a number
Before this a version 1.40 was seen as 1.4
2017-09-30 11:02:37 -07:00
Dima Kogan
1c853a2193 zsh now completes filenames 2017-06-27 18:27:26 -07:00
Dima Kogan
defcf5ef59 changelog bump, release 2017-06-20 16:44:55 -07:00
Dima Kogan
ba112a3bd9 --image always goes on the FRONT of the equation list
The image is intended to be background, so I want it to be rendered first, with
everything else on top of it
2017-06-20 16:44:02 -07:00
Dima Kogan
7d7511e62e changelog update 2017-06-19 13:14:20 -07:00
Dima Kogan
1744aeb6d2 tab completion for --image 2017-06-19 13:11:42 -07:00
Dima Kogan
53f6cdae5b added --image as a convenience wrapper for --equation 2017-06-19 13:08:33 -07:00
Dima Kogan
ed9512924d version bump 2017-03-31 15:40:39 -07:00
Dima Kogan
2ee401fcb4 changelog update 2017-03-31 15:39:48 -07:00
Dima Kogan
7c1f02ec7f reworded manpage of --exit 2017-03-19 19:50:45 -07:00
Dima Kogan
5740e55a6f Data can now come from STDIN or files on the cmdline
This emulates the while(<>) syntax in perl, and makes self-plotting data files
work again. These have been broken since that syntax was taken away in
4cfcf0fc35
2017-03-19 19:50:34 -07:00
Dima Kogan
a0c9e6e8bc version bump 2017-02-24 23:44:20 -08:00
Dima Kogan
64b12e4738 When plotting histograms, --xlen can coexist with --xmin/--xmax 2017-02-09 19:12:18 -08:00
Dima Kogan
402fa32bda histograms work as expected with --xlen and --monotonic 2017-02-09 16:07:12 -08:00
Dima Kogan
7da37a0015 better sanity checking for histogram options 2017-02-09 14:16:58 -08:00
Dima Kogan
a48b834512 getRangeSize() function added to ocnsolidate that logic 2017-02-09 14:16:58 -08:00
Dima Kogan
888583abe9 version bump 2016-11-25 14:45:47 -08:00
Dima Kogan
e17f110269 changelog bump 2016-11-25 14:45:35 -08:00
Dima Kogan
89a185f8a6 the sleep-forever delay at end is now > 1000 days 2016-11-25 14:42:49 -08:00
Dima Kogan
35ed74eaf1 'any' is from List::MoreUtils, not List::Util 2016-11-25 14:41:39 -08:00
Dima Kogan
07f574a929 added a new recipe 2016-11-25 14:39:22 -08:00
Dima Kogan
5dce1d8cda --style and --rangesize can now take a comma-separated list of IDs 2016-11-25 14:39:15 -08:00
Dima Kogan
048b0db65c Slightly better docs 2016-11-25 13:54:22 -08:00
Dima Kogan
b0877a8926 If the options couldn't be parsed I don't dump the whole manpage 2016-11-25 13:33:48 -08:00
Dima Kogan
4958bda912 version bump 2016-10-15 20:50:58 -07:00
Dima Kogan
3860d8281b version bump 2016-10-15 20:42:27 -07:00
Dima Kogan
4f9adb6e11 histograms have the correct default style 2016-10-15 20:35:48 -07:00
Dima Kogan
167e85d2a7 minor simplification
I delete the with option after I use it. This is defensive and clarifies the
intent
2016-10-15 20:17:08 -07:00
Dima Kogan
5123ca73d3 minor simplification
I delete the style and styleall options after I use them. This is defensive and
clarifies the intent
2016-10-15 20:14:33 -07:00
Dima Kogan
d4ca90e1bd minor simplification
curvestyle_hash doesn't really exist anymore
2016-10-15 20:08:24 -07:00
Dima Kogan
9e669044c7 can now ask for fnormal histograms 2016-09-08 23:02:31 -07:00
Dima Kogan
cacbedb336 added sample rpm spec file 2016-07-27 23:08:22 -07:00
Dima Kogan
18994e68e1 version bump 2016-07-27 22:16:34 -07:00
Dima Kogan
f8ed461571 No enhanced text mode in hardcopies, slightly larger font size 2016-07-11 10:11:06 -07:00
Dima Kogan
f01431dd1e removed unneeded old code 2016-01-22 00:48:59 -08:00
Dima Kogan
80b6030996 version bump 2016-01-01 08:11:45 -08:00
Dima Kogan
232b68b819 At the end of a streaming plot, include the last chunk of data 2016-01-01 08:08:51 -08:00
Dima Kogan
12eb829f16 whitespace 2015-12-15 13:18:29 -08:00
Dima Kogan
80b5d0ab61 improved documentation of --histstyle 2015-12-15 13:18:23 -08:00
Dima Kogan
960c43e758 added --equation to the completions 2015-11-13 11:23:15 -08:00
Dima Kogan
2ecdfb9aef minor POD fix 2015-11-13 11:19:25 -08:00
Dima Kogan
fa7082b242 version bump 2015-11-13 11:08:30 -08:00
Dima Kogan
c61e58da0a added --equation 2015-11-13 11:07:18 -08:00
Dima Kogan
c19dc4aa2a slighly fancier histogram recipe 2015-11-01 13:03:52 -08:00
Dima Kogan
238a0c1943 version bump 2015-11-01 12:55:09 -08:00
Dima Kogan
42a8218fbe removed unneeded if()
This looks like a large patch, but it's 99% re-indentation
2015-11-01 12:46:30 -08:00
Dima Kogan
4cfcf0fc35 removed threading stuff
It's now all in one thread with a select() loop. Much nicer
2015-11-01 12:44:55 -08:00
Dima Kogan
0e7f51f3f7 comment 2015-11-01 01:05:32 -08:00
Dima Kogan
01971c2434 whitespace 2015-11-01 01:02:51 -08:00
Dima Kogan
104accdd0d More sophisticated handling of termination conditions
no --stream and no --exit:
  When input exhausted, keep interactive plot up, keep shell busy until user ^C

no --stream and --exit:
  When input exhausted, keep non-interactive plot up, make shell available
  immediately

--stream and no --exit:
  When input exhausted, keep interactive plot up, keep shell busy until user ^C.
  A user ^C before the input is exhausted is blocked from killing
  C<feedgnuplot>, but allows the data input process to be killed, so it looks
  like an input exhaustion condition.

--stream and --exit:
  When input exhausted or user ^C, shut down all plots, make shell available
  immediately. A user ^C is respected immediately, and C<feedgnuplot> is killed
2015-11-01 01:02:51 -08:00
Dima Kogan
605158b391 replaced a 'say' with 'print' 2015-11-01 01:45:55 -07:00
Dima Kogan
0c32afacfd fixed typo 2014-08-22 17:17:18 -07:00
Dima Kogan
1688496f34 an "exit" command now has effect even with triggered-only replotting 2014-05-28 02:34:39 -07:00
Dima Kogan
498047e785 version bump 2014-05-14 00:45:49 -07:00
Dima Kogan
72adba82f7 Declaring feedgnuplot as a package to pacify the MetaCPAN indexer
Hopefully this is sufficient. We'll see

https://github.com/dkogan/feedgnuplot/pull/16
https://github.com/CPAN-API/metacpan-web/issues/1148
https://github.com/CPAN-API/metacpan-web/issues/1170
https://github.com/CPAN-API/metacpan-web/issues/994
2014-05-14 00:43:13 -07:00
Corey Putkunz
539b2035d8 Fix for "Use of implicit split to @_ is deprecated at /d/home/coreyp/bin/feedgnuplot line 377" 2014-04-07 10:20:57 +08:00
Dima Kogan
9b3cbc13be version bump 2014-02-06 23:17:29 -08:00
Dima Kogan
a65abc6095 fixed incorrect plotting of --timefmt --rangesize plots 2014-02-06 23:16:48 -08:00
Dima Kogan
5db86810b5 the rangesizes are now precomputed and easily assessed 2014-02-06 23:16:44 -08:00
Dima Kogan
d75b572875 version bump 2014-02-05 13:58:01 -08:00
Dima Kogan
6cb1574e2b tests use some of the nicer new syntax 2014-02-05 13:53:34 -08:00
Dima Kogan
4fd1c390ff added --rangesize and --rangesizeall
--rangesizeall is a different way to express --extraValuesPerPoint. --rangesize
is per-curve however
2014-02-05 13:53:16 -08:00
Dima Kogan
4163e24956 Simplified data parsing.
Instead of complicated regexes, I now simply do splits and joins. This paves the
way for per-curve extraValuesPerPoint
2014-02-05 02:54:00 -08:00
Dima Kogan
13268a1fa8 fixed typo 2014-01-26 12:13:38 -08:00
Dima Kogan
08fa97fdb5 version bump 2014-01-25 20:51:45 -08:00
Dima Kogan
e19bdf51c4 changelog bump 2014-01-25 20:51:45 -08:00
Dima Kogan
a9af1925e2 test suite now requires gawk
Previously I assumed that some 'awk' existed, but machines with just mawk were
producing test error complaining about strftime()
2014-01-25 20:51:45 -08:00
Dima Kogan
9387a85fe6 changelog bump 2014-01-24 15:48:06 -08:00
Dima Kogan
f38a00bfd1 docs now escape cmdline options with C<> 2014-01-24 15:47:34 -08:00
Dima Kogan
c21c4d7e70 added --style, --styleall 2014-01-24 15:31:37 -08:00
Dima Kogan
35901fe6d1 added --with 2014-01-24 15:19:03 -08:00
Dima Kogan
1e3d01edd2 comment 2014-01-24 14:41:49 -08:00
Dima Kogan
20e9adbae4 added "set" and "unset" options 2014-01-24 14:39:34 -08:00
Dima Kogan
2b2bba9ff3 Cleaned up some option-parsing logic
$options{y2} and $options{extracmds} now default to [], so I never need to check
for defined $options{y2}.

This patch also changes some

 foreach()
 {
   dosomething();
 }

blocks into

 dosomething() foreach();
2014-01-24 14:31:54 -08:00
7 changed files with 1166 additions and 367 deletions

125
Changes
View File

@@ -1,4 +1,127 @@
feedgnuplot (1.29) unstable; urgency=low
feedgnuplot (1.45)
* zsh completion: --hardcopy, --image suggest filenames
* --image now produces a nicer legend: just the filename
* --curvestyle now overrides --curvestyleall
- This is a bug fix
* The version is now treated as a string not as a number
- So "1.40" is distinct from "1.4"
-- Dima Kogan <dima@secretsauce.net> Sun, 29 Oct 2017 13:56:28 -0700
feedgnuplot (1.44)
* --image draws its output beneath everything else
-- Dima Kogan <dima@secretsauce.net> Tue, 20 Jun 2017 16:44:30 -0700
feedgnuplot (1.43)
* Added --image
-- Dima Kogan <dima@secretsauce.net> Mon, 19 Jun 2017 13:12:38 -0700
feedgnuplot (1.42)
* Data can now come from STDIN or files on the cmdline.
This fixes a regression. Self-plotting data files work again
-- Dima Kogan <dima@secretsauce.net> Fri, 31 Mar 2017 15:38:47 -0700
feedgnuplot (1.41)
* Histograms: --xlen can coexist with --xmin/--xmax
* Histograms: work as expected with --xlen and --monotonic
* Histograms: better sanity checking of options
-- Dima Kogan <dima@secretsauce.net> Fri, 24 Feb 2017 23:42:28 -0800
feedgnuplot (1.40)
* If the options couldn't be parsed I don't dump the whole manpage
* --style and --rangesize can now take a comma-separated list of IDs
* 'any' is from List::MoreUtils, not List::Util
* the sleep-forever delay at end is now > 1000 days
-- Dima Kogan <dima@secretsauce.net> Fri, 25 Nov 2016 14:45:06 -0800
feedgnuplot (1.39)
* by default, histograms are plotted in expected ways
-- Dima Kogan <dima@secretsauce.net> Sat, 15 Oct 2016 20:45:15 -0700
feedgnuplot (1.38)
* hardcopy defaults:
- no enhanced text mode
- larger font size
-- Dima Kogan <dima@secretsauce.net> Wed, 27 Jul 2016 22:15:11 -0700
feedgnuplot (1.37)
* At the end of a streaming plot, include the last chunk of data
* Added --equation to the completions
-- Dima Kogan <dima@secretsauce.net> Fri, 01 Jan 2016 08:09:43 -0800
feedgnuplot (1.36)
* Added --equation to plot symbolic equations
-- Dima Kogan <dima@secretsauce.net> Fri, 13 Nov 2015 11:08:26 -0800
feedgnuplot (1.35)
* replaced a 'say' with 'print'. Should work better with ancient perls
* an "exit" command now has effect even with triggered-only replotting
* More sophisticated handling of termination conditions:
- Without --exit, we always end up with an interactive plot when the
input data is exhausted or when the user sends a ^C to the pipeline
- When streaming, the first ^C does not kill feedgnuplot
* Removed threading
-- Dima Kogan <dima@secretsauce.net> Sun, 01 Nov 2015 12:50:33 -0800
feedgnuplot (1.34)
* Fix for "Use of implicit split to @_ is deprecated". Thanks to Corey
Putkunz
* Declaring feedgnuplot as a package to let MetaCPAN index this
distribution
-- Dima Kogan <dima@secretsauce.net> Wed, 14 May 2014 00:45:24 -0700
feedgnuplot (1.33)
* fixed incorrect plotting of --timefmt --rangesize plots
-- Dima Kogan <dima@secretsauce.net> Thu, 06 Feb 2014 23:17:21 -0800
feedgnuplot (1.32)
* Added --rangesize and --rangesizeall. Different curves can now plot
different-size tuples
-- Dima Kogan <dima@secretsauce.net> Wed, 05 Feb 2014 13:57:58 -0800
feedgnuplot (1.31)
* Test suite requires gawk to get strftime()
-- Dima Kogan <dima@secretsauce.net> Sat, 25 Jan 2014 20:49:38 -0800
feedgnuplot (1.30)
* Added --with, --set, --unset, --style, --styleall
-- Dima Kogan <dima@secretsauce.net> Fri, 24 Jan 2014 15:38:07 -0800
feedgnuplot (1.29)
* added CPAN meta-data to require IPC::Run at build time

View File

@@ -20,9 +20,9 @@ sub parseversion
while(<PL>)
{
if( /VERSION = ([0-9\.]+)/ )
if( /VERSION = '([0-9\.]+)'/ )
{
if ( $1 != $version )
if ( $1 ne $version )
{
die "Version mismatch. Changes says version is '$version', but 'bin/feedgnuplot' says it is '$1'";
}
@@ -64,6 +64,7 @@ WriteMakefile
PL_FILES => {},
EXE_FILES => [ 'bin/feedgnuplot' ],
BUILD_REQUIRES => { 'String::ShellQuote' => 0,
'List::MoreUtils' => 0,
'IPC::Run' => 0},
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
clean => { FILES => 'feedgnuplot-*' },

File diff suppressed because it is too large Load Diff

View File

@@ -7,12 +7,21 @@ complete -W \
--colormap \
--curvestyle \
--curvestyleall \
--style \
--styleall \
--with \
--dataid \
--domain \
--dump \
--exit \
--extraValuesPerPoint \
--rangesizeall \
--rangesize \
--extracmds \
--set \
--unset \
--equation \
--image \
--geometry \
--hardcopy \
--help \

View File

@@ -26,17 +26,26 @@ _arguments -S
'--zmin:min Z:' \
'--zmax:max Z:' \
'*--y2:plot to place on the Y2 axis:' \
'--curvestyleall[Additional styles for ALL curves]:style' \
'(--with)--curvestyleall[Additional styles for ALL curves]:style' \
'(--with)--styleall[Additional styles for ALL curves]:style' \
'(--curvestyleall)--with[Additional styles for ALL curves]:style' \
'*--extracmds[Additional gnuplot commands]:command' \
'*--set[Additional 'set' gnuplot commands]:set-option' \
'*--unset[Additional 'unset' gnuplot commands]:unset-option' \
'*--equation[Raw symbolic equation]:equation' \
'--image[Image file to render beneath the data]:image:_files -g "(#i)*.(jpg|jpeg|png|gif)"' \
'--square[Plot data with square aspect ratio]' \
'--square_xy[For 3D plots, set square aspect ratio for ONLY the x,y axes]' \
'--hardcopy[Plot to a file]:filename' \
'--hardcopy[Plot to a file]:new image filename:_files -g "(#i)*.(jpg|jpeg|png|gif)"' \
'--maxcurves[The maximum allowed number of curves]:number of curves' \
'(--3d)--monotonic[Resets plot if an X in the past is seen]' \
'--extraValuesPerPoint[How many extra values are given for each data point]:N'\
'(--rangesizeall)--extraValuesPerPoint[How many extra values are given for each data range]:N'\
'(--extraValuesPerPoint)--rangesizeall[How many values are given for each data range]:N'\
'*--rangesize[How many values comprise a data range in this curve]:curve id: :N:' \
'--dump[Instead of printing to gnuplot, print to STDOUT]' \
'--geometry[The X11 geometry string]:geometry string:' \
'*--curvestyle[Additional styles for a curve]:curve id: :style:' \
'*--style[Additional styles for a curve]:curve id: :style:' \
'(--3d)*--histogram:plot to treat as a histogram:' \
'--binwidth:Histogram bin width:' \
'--histstyle:Style of histogram:(frequency unique cumulative cnormal)' \

58
feedgnuplot.spec Normal file
View File

@@ -0,0 +1,58 @@
# Sample spec file for rpm-based systems. Debian-based systems already have this
# packaged, so we do not ship those here
Name: feedgnuplot
Version: 1.38
Release: 1%{?dist}
Summary: Pipe-oriented frontend to Gnuplot
BuildArch: noarch
License: Artistic or GPL-1+
URL: https://www.github.com/dkogan/feedgnuplot/
Source0: https://www.github.com/dkogan/feedgnuplot/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
BuildRequires: /usr/bin/pod2html
BuildRequires: perl-String-ShellQuote
BuildRequires: perl-ExtUtils-MakeMaker
BuildRequires: perl
BuildRequires: gawk
BuildRequires: gnuplot
BuildRequires: perl-IPC-Run
Requires: gnuplot
%description
Flexible, command-line-oriented frontend to Gnuplot. Creates plots from data
coming in on STDIN or given in a filename passed on the commandline. Various
data representations are supported, as is hardcopy output and streaming display
of live data.
%prep
%setup -q
%build
perl Makefile.PL INSTALLDIRS=vendor
make
pod2html --title=feedgnuplot bin/feedgnuplot > feedgnuplot.html
%install
make install DESTDIR=%{buildroot} PREFIX=/usr
mkdir -p %{buildroot}%{_defaultdocdir}/%{name}
cp Changes LICENSE feedgnuplot.html %{buildroot}%{_defaultdocdir}/%{name}
mkdir -p %{buildroot}%{_datadir}/zsh/site-functions
cp completions/zsh/* %{buildroot}%{_datadir}/zsh/site-functions
mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
cp completions/bash/* %{buildroot}%{_datadir}/bash-completion/completions
rm -rf %{buildroot}/usr/lib64
%files
%{_bindir}/*
%{_datadir}/zsh/*
%{_datadir}/bash-completion/*
%doc %{_defaultdocdir}/%{name}/*
%doc %{_mandir}

202
t/plots.t
View File

@@ -17,14 +17,20 @@ BEGIN {
exit(0);
}
open(my $pipe, 'gnuplot --version |');
if( !$pipe )
my $gawkversion = `gawk -V`;
if( !$gawkversion || $@ )
{
print("1..0 # Skip: gawk is required for strftime() in the test suite. Skipping tests.\n");
exit(0);
}
my $gnuplotVersion = `gnuplot --version`;
if( !$gnuplotVersion || $@)
{
print("1..0 # Skip: gnuplot not installed. Tests require ver. 4.6.4; feedgnuplot works with any.\n");
exit(0);
}
my $gnuplotVersion = <$pipe>;
chomp $gnuplotVersion;
if ($gnuplotVersion ne "gnuplot 4.6 patchlevel 4")
{
@@ -33,7 +39,7 @@ BEGIN {
}
}
use Test::More tests => 52;
use Test::More tests => 58;
use File::Temp 'tempfile';
use IPC::Run 'run';
use String::ShellQuote;
@@ -320,7 +326,7 @@ tryplot( testname => 'basic line plot with bounds, square aspect ratio',
EOF
tryplot( testname => 'lines on both axes with labels, legends, titles',
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'},
cmd => q{seq 5 | gawk '{print 2*$1, $1*$1}'},
options => [qw(--lines --points),
'--legend', '0', 'data 0',
'--title', "Test plot",
@@ -369,7 +375,7 @@ tryplot( testname => 'lines on both axes with labels, legends, titles',
EOF
tryplot( testname => 'lines on both axes with labels, legends, titles; different styles',
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'},
cmd => q{seq 5 | gawk '{print 2*$1, $1*$1}'},
options => ['--legend', '0', 'data 0',
'--title', "Test plot",
qw(--y2 1 --y2label y2 --xlabel x --ylabel y --y2max 30),
@@ -419,7 +425,7 @@ tryplot( testname => 'lines on both axes with labels, legends, titles; different
EOF
tryplot( testname => 'domain plot',
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'},
cmd => q{seq 5 | gawk '{print 2*$1, $1*$1}'},
options => [qw(--lines --points), '--domain'],
refplot => <<'EOF' );
@@ -465,7 +471,7 @@ tryplot( testname => 'domain plot',
EOF
tryplot( testname => 'dataid plot',
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'},
cmd => q{seq 5 | gawk '{print 2*$1, $1*$1}'},
options => [qw(--lines --points),
qw(--dataid --autolegend)],
refplot => <<'EOF' );
@@ -512,7 +518,7 @@ tryplot( testname => 'dataid plot',
EOF
tryplot( testname => '3d spiral with bounds, labels',
cmd => q{seq 50 | awk '{print 2*cos($1/5), sin($1/5), $1}'},
cmd => q{seq 50 | gawk '{print 2*cos($1/5), sin($1/5), $1}'},
options => [qw(--lines --points),
qw(--3d --domain --zmin -5 --zmax 45 --zlabel z),
'--extracmds', 'set view 60,30'],
@@ -560,7 +566,7 @@ tryplot( testname => '3d spiral with bounds, labels',
EOF
tryplot( testname => '3d spiral with bounds, labels, square xy aspect ratio',
cmd => q{seq 50 | awk '{print 2*cos($1/5), sin($1/5), $1}'},
cmd => q{seq 50 | gawk '{print 2*cos($1/5), sin($1/5), $1}'},
options => [qw(--lines --points),
qw(--3d --domain --zmin -5 --zmax 45 --zlabel z),
'--extracmds', 'set view 60,30', '--square_xy'],
@@ -608,7 +614,7 @@ tryplot( testname => '3d spiral with bounds, labels, square xy aspect ratio',
EOF
tryplot( testname => 'Monotonicity check',
cmd => q{seq 10 | awk '{print (NR-1)%5,NR}'},
cmd => q{seq 10 | gawk '{print (NR-1)%5,NR}'},
options => [qw(--lines --points --domain --monotonic)],
refplot => <<'EOF' );
@@ -655,7 +661,7 @@ EOF
tryplot( testname => 'basic --timefmt plot',
cmd => q{seq 5 | awk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1}'},
cmd => q{seq 5 | gawk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1}'},
options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S'],
refplot => <<'EOF' );
@@ -701,7 +707,7 @@ tryplot( testname => 'basic --timefmt plot',
EOF
tryplot( testname => '--timefmt plot with bounds',
cmd => q{seq 5 | awk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1}'},
cmd => q{seq 5 | gawk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1}'},
options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S',
'--xmin', '20 Oct 2013 06:05:00',
'--xmax', '20 Oct 2013 06:05:20'],
@@ -749,7 +755,7 @@ tryplot( testname => '--timefmt plot with bounds',
EOF
tryplot( testname => '--timefmt plot with --monotonic',
cmd => q{seq 10 | awk '{x=(NR-1)%5; print strftime("%d %b %Y %T",1382249107+x,1),$1}'},
cmd => q{seq 10 | gawk '{x=(NR-1)%5; print strftime("%d %b %Y %T",1382249107+x,1),$1}'},
options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S',
'--monotonic'],
refplot => <<'EOF' );
@@ -795,10 +801,57 @@ tryplot( testname => '--timefmt plot with --monotonic',
EOF
tryplot( testname => '--timefmt with custom rangesize',
cmd => q{seq 5 | gawk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1,$1/10}'},
options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S',
qw(--with errorbars --rangesizeall 2)],
refplot => <<'EOF' );
5.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------**
+ + + + + + + + *
| *
5 ++ +A
| *
| *
| *
4.5 ++ **
| *** |
| * |
4 ++ A ++
| * |
| * |
| *** |
3.5 ++ ++
| *** |
| * |
3 ++ A ++
| * |
| * |
| *** |
2.5 ++ ++
| |
| *** |
2 ++ A ++
| * |
| *** |
| |
1.5 ++ ++
| |
| |
1 A* ++
** |
| |
+ + + + + + + + +
0.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------++
05:08 05:08 05:09 05:09 05:10 05:10 05:11 05:11 05:12
EOF
tryplot( testname => 'Error bars (using extraValuesPerPoint)',
cmd => q{seq 5 | awk '{print $1,$1,$1/10}'},
cmd => q{seq 5 | gawk '{print $1,$1,$1/10}'},
options => [qw(--domain),
qw(--extraValuesPerPoint 1 --curvestyle 0), 'with errorbars'],
qw(--extraValuesPerPoint 1 --with errorbars)],
refplot => <<'EOF' );
@@ -843,6 +896,103 @@ tryplot( testname => 'Error bars (using extraValuesPerPoint)',
EOF
tryplot( testname => 'Error bars (using rangesizeall)',
cmd => q{seq 5 | gawk '{print $1,$1,$1/10}'},
options => [qw(--domain),
qw(--rangesizeall 2 --with errorbars)],
refplot => <<'EOF' );
5.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------**
+ + + + + + + + *
| *
5 ++ +A
| *
| *
| *
4.5 ++ **
| *** |
| * |
4 ++ A ++
| * |
| * |
| *** |
3.5 ++ ++
| *** |
| * |
3 ++ A ++
| * |
| * |
| *** |
2.5 ++ ++
| |
| *** |
2 ++ A ++
| * |
| *** |
| |
1.5 ++ ++
| |
| |
1 A* ++
** |
| |
+ + + + + + + + +
0.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------++
1 1.5 2 2.5 3 3.5 4 4.5 5
EOF
tryplot( testname => 'Error bars (using rangesize, rangesizeall)',
cmd => q{seq 5 | gawk '{print $1,"vert",$1,$1/10,"horiz",5-$1,$1-$1/5,$1+$1/20}'},
options => [qw(--domain --dataid),
qw(--rangesize vert 2 --rangesizeall 3 --with xerrorbars --style vert), 'with errorbars',
qw(--xmin 1 --xmax 5 --ymin 0.5 --ymax 5.5)],
refplot => <<'EOF' );
+-----------+----------+-----------+----------+-----------+----------+-----------+---------**
+ + + + + + + + *
| *
5 ++ +A
| *
| *
| *
| **
| *** |
## * |
4 B# A ++
## * |
| * |
| *** |
| |
| *** |
| # # * |
3 ++ #########B## A ++
| # # * |
| * |
| *** |
| |
| |
| *** # # |
2 ++ A ##############B### ++
| * # # |
| *** |
| |
| |
| |
| # # |
1 A* ##################B##### ++
** # # |
| |
+ + + + + + + + +
+-----------+----------+-----------+----------+-----------+----------+-----------+----------+
1 1.5 2 2.5 3 3.5 4 4.5 5
EOF
SKIP:
{
@@ -860,7 +1010,7 @@ skip "Skipping unreliable tests. Set RUN_ALL_TESTS environment variable to run t
tryplot( testname => 'Histogram plot',
cmd => q{seq 50 | awk '{print $1*$1}'},
cmd => q{seq 50 | gawk '{print $1*$1}'},
options => [qw(--lines --points),
qw(--histo 0 --binwidth 50 --ymin 0 --curvestyleall), 'with boxes'],
refplot => <<'EOF' );
@@ -907,7 +1057,7 @@ tryplot( testname => 'Histogram plot',
EOF
tryplot( testname => 'Cumulative histogram',
cmd => q{seq 50 | awk '{print $1*$1}'},
cmd => q{seq 50 | gawk '{print $1*$1}'},
options => [qw(--lines --points),
qw(--histo 0 --histstyle cum --binwidth 50 --ymin 0 --curvestyleall), 'with boxes'],
refplot => <<'EOF' );
@@ -954,7 +1104,7 @@ tryplot( testname => 'Cumulative histogram',
EOF
tryplot( testname => 'Circles',
cmd => q{seq 5 | awk '{print $1,$1,$1/10}'},
cmd => q{seq 5 | gawk '{print $1,$1,$1/10}'},
options => [qw(--circles --domain)],
refplot => <<'EOF' );
@@ -1008,7 +1158,7 @@ note( "Starting to run streaming tests. These will take several seconds each" );
# points, and then "exit", so I should have two frames worth of data plotted. I
# pre-send a 0 so that the gnuplot autoscaling is always well-defined
tryplot( testname => 'basic streaming test',
cmd => q{seq 500 | awk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 1.2");}'},
cmd => q{seq 500 | gawk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 1.2");}'},
options => [qw(--lines --points --stream)],
refplot => <<'EOF' );
@@ -1094,7 +1244,7 @@ tryplot( testname => 'basic streaming test',
EOF
tryplot( testname => 'basic streaming test, twice as fast',
cmd => q{seq 500 | awk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 0.6");}'},
cmd => q{seq 500 | gawk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 0.6");}'},
options => [qw(--lines --points --stream 0.4)],
refplot => <<'EOF' );
@@ -1181,7 +1331,7 @@ EOF
tryplot( testname => 'streaming with --xlen',
cmd => q{seq 500 | awk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 0.6");}'},
cmd => q{seq 500 | gawk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 0.6");}'},
options => [qw(--lines --points --stream 0.4 --xlen 1.1)],
refplot => <<'EOF' );
@@ -1267,7 +1417,7 @@ tryplot( testname => 'streaming with --xlen',
EOF
tryplot( testname => 'streaming with --monotonic',
cmd => q{seq 500 | awk '{if(NR==11) {print "exit";} else {x=(NR-1)%5; if(x==0) {print -1,-1;} print x,NR;}; fflush(); system("sleep 0.6");}'},
cmd => q{seq 500 | gawk '{if(NR==11) {print "exit";} else {x=(NR-1)%5; if(x==0) {print -1,-1;} print x,NR;}; fflush(); system("sleep 0.6");}'},
options => [qw(--lines --points --stream 0.4 --domain --monotonic)],
refplot => <<'EOF' );
@@ -1673,7 +1823,7 @@ tryplot( testname => 'streaming with --monotonic',
EOF
tryplot( testname => '--timefmt streaming plot with --xlen',
cmd => q{seq 5 | awk 'BEGIN{ print strftime("%d %b %Y %T",1382249107-1,1),-4;} {if(NR==3) {print "exit";} else{ print strftime("%d %b %Y %T",1382249107+$1,1),$1;} fflush(); system("sleep 0.6")}'},
cmd => q{seq 5 | gawk 'BEGIN{ print strftime("%d %b %Y %T",1382249107-1,1),-4;} {if(NR==3) {print "exit";} else{ print strftime("%d %b %Y %T",1382249107+$1,1),$1;} fflush(); system("sleep 0.6")}'},
options => ['--points', '--lines',
'--domain', '--timefmt', '%d %b %Y %H:%M:%S',
qw(--stream 0.4 --xlen 3)],
@@ -1761,7 +1911,7 @@ tryplot( testname => '--timefmt streaming plot with --xlen',
EOF
tryplot( testname => '--timefmt streaming plot with --monotonic',
cmd => q{seq 10 | awk '{x=(NR-1)%5; if(x==0) {print strftime("%d %b %Y %T",1382249107-1,-4),-4;} print strftime("%d %b %Y %T",1382249107+x,1),NR; fflush(); system("sleep 0.6")}'},
cmd => q{seq 10 | gawk '{x=(NR-1)%5; if(x==0) {print strftime("%d %b %Y %T",1382249107-1,-4),-4;} print strftime("%d %b %Y %T",1382249107+x,1),NR; fflush(); system("sleep 0.6")}'},
options => ['--points', '--lines',
'--domain', '--timefmt', '%d %b %Y %H:%M:%S',
qw(--stream 0.4 --monotonic)],
@@ -2177,7 +2327,7 @@ sub tryplot
my %args = @_;
my @options = ('--exit',
'--extracmds', 'unset grid',
qw(--unset grid),
'--terminal', 'dumb 100,40');
unshift @options, @{$args{options}};