/usr/share/doc/gri/html/Hints.html is in gri-html-doc 2.12.26-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gri: Hints for Gri programming</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000EE" vlink="#551A8B" alink="FF0000">
<!-- newfile Hints.html "Gri: Hints for Gri programming" "Programming Gri" -->
<!-- @node Hints, Debugging, Implementation of Ampersand Syntax, Programming -->
<a name="Hints" ></a>
<img src="./resources/top_banner.gif" alt="navigation map" 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="GriInThePress.html">17: Gri in Press</a><br>
<a href="Acknowledgments.html">18: Acknowledgments</a><br>
<a href="License.html">19: 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="Programming.html#Programming" shape="rect" coords="516,2,532,24" href="Programming.html#Programming">
<area alt="Gri: making a newcommand change its arguments" shape="rect" coords="557,2,573,24" href="ChangeableCommandArguments.html">
<area alt="Gri: Debugging Gri programs" shape="rect" coords="581,2,599,24" href="Debugging.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: Debugging Gri programs" shape="rect" coords="581,2,599,24" href="Debugging.html">
</map>
<h2>10.12: Hints for Gri Programming</h2>
Here are some hints for good Gri programs:
<p>
<ul>
<li>
Whenever working with grids (for contouring) or images, make use of the
`<font color="#82140F"><code>show grid</code></font>' or `<font color="#82140F"><code>show image</code></font>' commands. They will give you
useful information about the statistics (min/max/histogram) of the items.
<li>
Use the operating system, not Gri, to manipulate your data. For
example, if you have a file whose first column is x times 100, and third
is the arcsin of y, you could do:
<p>
<TABLE SUMMARY="Example" BORDER="0" BGCOLOR="#efefef" WIDTH="100%">
<TR>
<TD>
<PRE>
<font color="#82140F">
open "gawk '{print $1/100, sin($3)}' |"
read columns x y
</font></PRE>
</TD>
</TR>
</TABLE>
<p>
If you have x and y in a non-decimal geographical format
(e.g. hour.minute-second format), use the operating system to convert
for you (see <a href="Open.html#Open">Open</a>).
<li>
Use the `<font color="#82140F"><code>pstack</code></font>' operator liberally in your rpn expressions
to see what is going on (see <a href="ReversePolishMath.html#rpnMathematics">rpn Mathematics</a>).
<li>
While developing programs, put a `<font color="#82140F"><code>show columns statistics</code></font>' command
after every `<font color="#82140F"><code>read column</code></font>' command, to check that the data have been
read correctly.
<li>
Development time can be minimized by limiting the number of data being
processed. For example, in a multi-panel plot, it is often necessary to
try various alternatives before aesthetic scales and page layout is
achieved. The process can be speeded up by limiting the number of data
being processed, as shown below. (If Gri finds fewer data in the file
than specified, it will simply use the data that it found; so when the
program works, just change `<font color="#82140F"><code>.n.</code></font>' into something large.)
<p>
<TABLE SUMMARY="Example" BORDER="0" BGCOLOR="#efefef" WIDTH="100%">
<TR>
<TD>
<PRE>
<font color="#82140F">
.n. = 100 # 10000 for later
...
# Panel 1
read columns .n. x y
...
# Panel 2
read columns .n. x y
...
</font></PRE>
</TD>
</TR>
</TABLE>
<p>
<li>
Create new commands to do repetitive work.
<li>
Use `<font color="#82140F"><code>draw time stamp</code></font>' on all plots except for publication versions:
<p>
<TABLE SUMMARY="Example" BORDER="0" BGCOLOR="#efefef" WIDTH="100%">
<TR>
<TD>
<PRE>
<font color="#82140F">
if !..publication..
draw time stamp
end if
</font></PRE>
</TD>
</TR>
</TABLE>
<p>
<li>
For multiple panels on one page, do `<font color="#82140F"><code>delete x scale</code></font>'
or `<font color="#82140F"><code>delete y scale</code></font>' before each
new panel, so you will start afresh. Clearly identify
code for particular panels with
comments. This reduces errors you might get if you shuffle things
later.
<li>
Use the `<font color="#82140F"><code>..num_col_data..</code></font>' built-in variable to see how many data
have passed the `<font color="#82140F"><code>set input data window</code></font>' data window in the last
`<font color="#82140F"><code>read columns</code></font>' command. The following example shows how to
avoid drawing an unwanted curve:
<p>
<TABLE SUMMARY="Example" BORDER="0" BGCOLOR="#efefef" WIDTH="100%">
<TR>
<TD>
<PRE>
<font color="#82140F">
open \f
read columns x y
close
if ..num_col_data..
draw curve
draw label "\f" at \
{rpn ..xlast.. xusertocm 0.5} \
{rpn ..ylast.. yusertocm 0.2} cm
end if
</font></PRE>
</TD>
</TR>
</TABLE>
<p>
<li>
Use synonyms and `<font color="#82140F"><code>query</code></font>' for filenames. This makes programs much
more flexible. Note that you can string synonyms together:
<p>
<TABLE SUMMARY="Example" BORDER="0" BGCOLOR="#efefef" WIDTH="100%">
<TR>
<TD>
<PRE>
<font color="#82140F">
\dir = "~/EOS/iso0/"
query \file "Give file in directory \dir" ("1.dat")
open \dir/\file
</font></PRE>
</TD>
</TR>
</TABLE>
<p>
It is also a good idea to give a restrictive list of possibilities in
your `<font color="#82140F"><code>query</code></font>' command, to avoid complicated `<font color="#82140F"><code>if</code></font>' commands later
(see <a href="Query.html#Query">Query</a>).
<li>
Use multiple `<font color="#82140F"><code>draw title</code></font>' commands:
<p>
<TABLE SUMMARY="Example" BORDER="0" BGCOLOR="#efefef" WIDTH="100%">
<TR>
<TD>
<PRE>
<font color="#82140F">
draw title "Atlantic water entering Arctic Ocean"
draw title "\.command_file. \.time."
</font></PRE>
</TD>
</TR>
</TABLE>
<p>
<li>
Use the `<font color="82140F"><code>query</code></font>' command to interact with the user (see <a href="Query.html#Query">Query</a>). The results can be stored in variables and synonyms.
<p>
</ul>
<p>
</table>
<img src="./resources/bottom_banner.gif" alt="navigation map" usemap="#navigate_bottom" border="0">
</body>
</html>
|