[feedgnuplot] 03/07: histograms work as expected with --xlen and --monotonic
Dima Kogan
dima at secretsauce.net
Sat Feb 25 08:04:24 UTC 2017
This is an automated email from the git hooks/post-receive script.
dkogan pushed a commit to branch debian
in repository feedgnuplot.
commit 402fa32bda28fd44ac035e7e4ed1e7a0418bbada
Author: Dima Kogan <dima at secretsauce.net>
Date: Thu Feb 9 12:27:03 2017 -0800
histograms work as expected with --xlen and --monotonic
---
bin/feedgnuplot | 40 +++++++++++++++++++++++++++++++++++-----
1 file changed, 35 insertions(+), 5 deletions(-)
diff --git a/bin/feedgnuplot b/bin/feedgnuplot
index 4e5cb17..8631195 100755
--- a/bin/feedgnuplot
+++ b/bin/feedgnuplot
@@ -981,6 +981,10 @@ sub setCurveAsHistogram
my ($id, $str) = @_;
my $curve = getCurve($id);
+
+ # With histograms I have 2d plots with rangesize=1. I thus give gnuplot two
+ # values for each point: a domain and a range. For histograms I ignore the
+ # domain, so I get the statistics of the 2nd column: $2
$curve->{histoptions} = 'using (histbin($2)):(1.0) smooth ' . $options{histstyle};
updateCurveOptions($curve, $id);
@@ -1048,7 +1052,11 @@ sub replot
# seconds-since-the-epoch BACK to the timefmt. Sheesh
($xmin, $xmax) = map {Time::Piece->strptime( $_, '%s' )->strftime( $options{timefmt} ) } ($xmin, $xmax);
}
- sendRangeCommand( "xrange", $xmin, $xmax );
+
+ # if we have any histograms, then I'm not really visualizing the domain at
+ # all, and I don't set the range.
+ sendRangeCommand( "xrange", $xmin, $xmax )
+ unless @{$options{histogram}};
}
plotStoredData();
@@ -1297,7 +1305,12 @@ windowsize> can be given. This will create an constantly-updating, scrolling
view of the recent past. C<windowsize> should be replaced by the desired length
of the domain window to plot, in domain units (passed-in values if C<--domain>
or line numbers otherwise). If the domain is a time/date via C<--timefmt>, then
-C<windowsize> is and I<integer> in seconds.
+C<windowsize> is and I<integer> in seconds. If we're plotting a histogram, then
+C<--xlen> causes a histogram over a moving window to be computed. The subtlely
+here is that with a histogram you don't actually I<see> the domain since only
+the range is analyzed. But the domain is still there, and can be utilized with
+C<--xlen>. With C<--xlen> we can plot I<only> histograms or I<only>
+I<non>-histograms.
=head3 Special data commands
@@ -1531,7 +1544,12 @@ C<--xlen xxx>
When using C<--stream>, sets the size of the x-window to plot. Omit this or set
it to 0 to plot ALL the data. Does not make sense with 3d plots. Implies
-C<--monotonic>
+C<--monotonic>. If we're plotting a histogram, then C<--xlen> causes a histogram
+over a moving window to be computed. The subtlely here is that with a histogram
+you don't actually I<see> the domain since only the range is analyzed. But the
+domain is still there, and can be utilized with C<--xlen>. With C<--xlen> we can
+plot I<only> histograms or I<only> I<non>-histograms.
+
=item
@@ -1573,8 +1591,9 @@ specified for this curve (C<--curvestyle>) or all curves (C<--with>,
C<--curvestyleall>) then the default histogram style is set: filled boxes with
borders. This is what the user generally wants. This works with C<--domain>
and/or C<--stream>, but in those cases the x-value is used I<only> to cull old
-data because of C<--xlen> or C<--monotonic>. I.e. the x-values are I<not> drawn
-in any way. Can be passed multiple times, or passed a comma- separated list
+data because of C<--xlen> or C<--monotonic>. I.e. the domain values are I<not>
+drawn in any way. Can be passed multiple times, or passed a comma- separated
+list
=item
@@ -1915,6 +1934,17 @@ in a Thinkpad.
--binwidth 10
--ymin 0 --xlabel 'File size (MB)' --ylabel Frequency
+=head2 Plotting a live histogram of the ping round-trip times for the past 20 seconds
+
+ $ ping -A -D 8.8.8.8 |
+ perl -anE 'BEGIN { $| = 1; }
+ $F[0] =~ s/[\[\]]//g or next;
+ $F[7] =~ s/.*=//g or next;
+ say "$F[0] $F[7]"' |
+ feedgnuplot --stream --domain --histogram 0 --binwidth 10 \
+ --xlabel 'Ping round-trip time (s)' \
+ --ylabel Frequency --xlen 20
+
=head2 Plotting points on top of an existing image
This can be done by using C<--equation> to pass arbitrary plot input to gnuplot:
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/feedgnuplot.git
More information about the debian-science-commits
mailing list