<html> <head> <title>Gri: running means</title> </head> <body bgcolor="#FFFFFF" text="#000000" link="#0000EE" vlink="#551A8B" alink="FF0000"> <!-- newfile RunningMeans.html "Gri: running means" "Examples" --> <!-- @node Running Means, Finite Element Model Mesh, PDF Diagram, Examples --> <a name="RunningMeans" ></a> <img src="./resources/top_banner.gif" usemap="#navigate_top" border="0"> <table summary="top banner" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="150" valign="top"> <font size=-1> <br> Chapters: </br> <a href="Introduction.html">1: Introduction</a><br> <a href="SimpleExample.html">2: Simple example</a><br> <a href="InvokingGri.html">3: Invocation</a><br> <a href="GettingMoreControl.html">4: Finer Control</a><br> <a href="X-Y.html">5: X-Y Plots</a><br> <a href="ContourPlots.html">6: Contour Plots</a><br> <a href="Images.html">7: Image Plots</a><br> <a href="Examples.html">8: Examples</a><br> <a href="Commands.html">9: Gri Commands</a><br> <a href="Programming.html">10: Programming</a><br> <a href="Environment.html">11: Environment</a><br> <a href="Emacs.html">12: Emacs Mode</a><br> <a href="History.html">13: History</a><br> <a href="Installation.html">14: Installation</a><br> <a href="Bugs.html">15: Gri Bugs</a><br> <a href="TestSuite.html">16: Test Suite</a><br> <a href="Acknowledgments.html">17: Acknowledgments</a><br> <a href="License.html">18: License</a><br> <br> Indices:</br> <a href="ConceptIndex.html"><i>Concepts</i></a><br> <a href="CommandIndex.html"><i>Commands</i></a><br> <a href="BuiltinIndex.html"><i>Variables</i></a><br> </font> <td width="500" valign="top"> <map name="navigate_top"> <area alt="index.html#Top" shape="rect" coords="5,2,218,24" href="index.html#Top"> <area alt="Examples.html#Examples" shape="rect" coords="516,2,532,24" href="Examples.html#Examples"> <area alt="Gri: PDF Diagram" shape="rect" coords="557,2,573,24" href="PDFDiagram.html"> <area alt="Gri: Finite Element Model mesh" shape="rect" coords="581,2,599,24" href="FEM.html"> </map> <map name="navigate_bottom"> <area alt="index.html#Top" shape="rect" coords="5,2,218,24" href="index.html#Top"> <area alt="Gri: Finite Element Model mesh" shape="rect" coords="581,2,599,24" href="FEM.html"></map> <h2>8.10: Running-Mean Skyline Diagram</h2> Timeseries data are often cast into running means; e.g. a temperature record might be cast into monthly mean values. The following example shows how to use a perl script to accomplish this easily, producing a graph with both the raw data (bullets) and the running mean (a skyline plot). <p> <TABLE SUMMARY="Example" BORDER="0" BGCOLOR="#efefef" WIDTH="100%"> <TR> <TD> <PRE> <font color="#82140F"> `Bin with x .min. .max. .inc. \in_file \out_file' <p> Creates \out_file from \in_file. In each of these files, column 1 represents x and column 2 represents y. The \out_file file contains the average values of y in x bands of width .inc., centred at .min., (.min.+.inc.), up to .max, and with missing values inserted in bands with no x-data in \in_file. Each x-band is represented in \out_file by a plateau in y, and adjacent bands with non-missing data are connnected by vertical lines; the effect is a skyline plot of the banded means. Sample application: plot monthly means of a variable. { if {rpn \.words. 8 !=} show "ERROR: `\.proper_usage.' called without" show " giving all parameters" quit 1 end if system perl <<"EOF" $min = \.word3.; $max = \.word4.; $inc = \.word5.; open(IN, "\.word6.") || die "`\.proper_usage': no \\in_file"; open(OUT, ">\.word7.") || die "`\.proper_usage': no \\out_file"; <p> $n = ($max - $min) / $inc; # # Set up bins. for($i = 0; $i <= $n; $i++) { $xx[$i] = 0; $yy[$i] = 0; $nn[$i] = 0; } while(<IN>) { ($x, $y) = split(' '); $i = int(0.5 + ($x - $min) / $inc); $i = 0 if $i < 0; $i = $n - 1 if $i > $n - 1; $xx[$i] += $x; $yy[$i] += $y; $nn[$i]++; } for($i = 0; $i <= $n; $i++) { if ($nn[$i] > 0) { $xx[$i] /= $nn[$i]; $yy[$i] /= $nn[$i]; $xleft = $min + $inc * ($i - 0.5); $xright = $min + $inc * ($i + 0.5); # # If datum to left non-missing, # just draw vertical line # down to the last yy value. if ($i > 0 && $nn[$i - 1] > 0) { print OUT "$xleft $yy[$i - 1]\n"; } else { print OUT "$xleft \.missingvalue.\n" } print OUT "$xleft $yy[$i]\n"; print OUT "$xright $yy[$i]\n"; } } EOF } <p> # Bin into months Bin with x 1964 1974 {rpn 1 12 /} \ timeseries.dat tmp.dat open tmp.dat read columns x y close draw curve # skyline of means open timeseries.dat read columns x y close draw symbol bullet # data system rm -f tmp.dat # clean up </font></PRE> </TD> </TR> </TABLE> <p> </table> <img src="./resources/bottom_banner.gif" usemap="#navigate_bottom" border="0"> </body> </html>