/usr/share/doc/gri/html/PDFDiagram.html is in gri-html-doc 2.12.23-9build2.
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 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gri: PDF Diagram</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 PDFDiagram.html "Gri: PDF Diagram" "Examples" -->
<!-- @node PDF Diagram, Running Means, TS Diagram, Examples -->
<a name="PDFDiagram" ></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="Examples.html#Examples" shape="rect" coords="516,2,532,24" href="Examples.html#Examples">
<area alt="Gri: drawing TS diagrams" shape="rect" coords="557,2,573,24" href="TSDiagram.html">
<area alt="Gri: running means" shape="rect" coords="581,2,599,24" href="RunningMeans.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: running means" shape="rect" coords="581,2,599,24" href="RunningMeans.html">
</map>
<h2>8.9: Probability Density Function Diagram</h2>
A common application is to draw the probability density function for
(x,y) data. Gri has no builtin facility to do this, but the following
example shows how to create the gridded PDF data using a call to the
`<font color="#82140F"><code>perl</code></font>' system command. The gridded data thus generated are
contoured, creating a PDF diagram. As the comments in the program
state, the first call to Perl is specific to a particular dataset, and
can be ignored on first reading; it just creates the file
`<font color="#82140F"><samp>tmp-xy.\.pid.</samp></font>'.
<p>
<TABLE SUMMARY="Example" BORDER="0" BGCOLOR="#efefef" WIDTH="100%">
<TR>
<TD>
<PRE>
<font color="#82140F">
# Draw prob-density-function TS diagram for Bravo data
<p>
# This first call to perl is specific to the
# particular (weird) dataset. All that matters
# is that a file of (x,y) data is created, and
# stored in the file called `tmp-xy.\.pid.'
system perl <<"EOF"
#
# Slurp in x[], y[] data
$dir = "/users/dek/kelley/Labrador/bravo/data";
$Sfile = "$dir/S_25db_1day";
$Tfile = "$dir/T_25db_1day";
open(S, "$Sfile") || die "Can't open input $Sfile";
open(T, "$Tfile") || die "Can't open input $Tfile";
open(ST, ">tmp-xy.\.pid.")
|| die "Can't open tmp-xy.\.pid.";
$day = 5;
$year = 1964;
while(<S>) {
@S = split;
$_ = <T>;
@T = split;
if (240 < $day && $day < 360) {
for ($i = 0; $i < $#S; $i++) { #all depths
print ST "$S[$i] $T[$i]\n";
}
}
$day += 1;
if ($day > 365) {
$year++;
$day = 0;
}
if ($year > 1967) { last; }
}
EOF
<p>
#
# Create 2D PDF for (x,y) data in file \infile
# storing the results in \outfile. X ranges
# between the indicated limits, with the indicated
# binsize, as does y. The synonyms defined
# on the next 4 lines are the only input this
# perlscript needs; the perlscript itself is
# quite general. For details of what it does,
# particularly the scaling of the PDF, see
# the perl comments.
\xmin = "33.5"; \xmax = "35.5"; \xinc = "0.05";
\ymin = "-2.0"; \ymax = "11.0"; \yinc = "0.25";
\infile = "tmp-xy.\.pid."
\outfile = "tmp-grid.\.pid."
system perl <<"EOF"
#
# Prepare 2 dimensional probability-density-function
# dataset for contouring by Gri. This reads (x,y)
# data from a file called $infile (defined below)
# and creates an output file called $outfile
# (also defined below) containing the
# x-grid, the y-grid, and then the grid data,
# suitable for reading/contouring by the Gri
# commands
# open tmp-grid.\.pid.
# read .number_of_data.
# read grid x
# read grid y
# read grid data
# draw contour
#
# The values in the output grid are defined so
# that they sum to the reciprocal of the
# product of the x binsize and y binsize (see
# definition of $factor below).
#
$xmin = \xmin; $xmax = \xmax; $xinc = \xinc;
$ymin = \ymin; $ymax = \ymax; $yinc = \yinc;
$infile = "\infile";
$outfile = "\outfile";
#
# Slurp in the x[], y[] data, storing
# the total number of data in $n.
open(IN, "$infile") || die "Can't open infile";
open(OUT, ">$outfile") || die "Can't open outfile";
$n = 0;
while(<IN>) {
($x[$n], $y[$n]) = split;
$n++;
}
#
# Zero out matrix (stored in a linear array scanned
# as one reads a book).
$cols = int(1 + ($xmax - $xmin) / $xinc);
$rows = int(1 + ($ymax - $ymin) / $yinc);
for ($y = $ymax; $y > $ymin; $y -= $yinc) {
for ($x = $xmin; $x < $xmax; $x += $xinc) {
$l = int(($x - $xmin) / $xinc
+ $cols * int(($y - $ymin) / $yinc));
$sum[$l] = 0;
}
}
#
# Cumulate (x,y) data into the matrix
$inside = 0;
for ($i = 0; $i < $n; $i++) {
if ($ymin <= $y[$i] && $y[$i] <= $ymax
&& $xmin <= $x[$i] && $x[$i] <= $xmax) {
$l = int(($x[$i] - $xmin) / $xinc
+ $cols * int(($y[$i] - $ymin) / $yinc));
$sum[$l]++;
$inside++;
} else {
print STDERR "($y[$i], $x[$i]) clipped\n";
}
}
#
# Print number of points (to allow renormalization
# if the user wishes)
print OUT "$inside\n";
#
# Print x grid, y grid, then grid itself
for ($x = $xmin; $x < $xmax; $x += $xinc) {
printf OUT "%lg\n", $x;
}
print OUT "\n";
for ($y = $ymax; $y > $ymin; $y -= $yinc) {
printf OUT "%lg\n", $y;
}
print OUT "\n";
#
# The $factor variable scales the PDF.
$factor = 1 / $xinc / $yinc / $inside;
for ($y = $ymax; $y > $ymin; $y -= $yinc) {
for ($x = $xmin; $x < $xmax; $x += $xinc) {
$l = int(($x - $xmin) / $xinc
+ $cols * int(($y - $ymin) / $yinc));
printf OUT "%lg ", $factor * $sum[$l];
}
print OUT "\n";
}
EOF
<p>
# Axes
set x margin 3
set x margin 6
set x name "Salinity [PSU]"
set y name "Potential Temperature [$\circ$C]"
set x axis 34.5 34.8 0.1
set y axis 5 9 1
draw axes
<p>
# PDF
open tmp-grid.\.pid.
read .number_of_data.
read grid x
read grid y
read grid data
.smooth. = 0
<p>
# Contours. Use clipping, since the axes are
# zooming in on part of the PDF.
set font size 8
set contour label position centered
set clip postscript on
set line width rapidograph 4x0
draw contour 0.2 2.2 0.4 unlabelled
set line width rapidograph 0
draw contour 0.4 2.4 0.4
set clip postscript off
end if
</font></PRE>
</TD>
</TR>
</TABLE>
<p>
</table>
<img src="./resources/bottom_banner.gif" alt="navigation map" usemap="#navigate_bottom" border="0">
</body>
</html>
|