You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

165 lines
11 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Reading data from a file</title><link rel="stylesheet" type="text/css" href="manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.0"><link rel="home" href="index.html" title="JpGraph Manual"><link rel="up" href="ch13.html" title="Chapter 13. Getting hold of the data to be displayed"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Reading data from a file</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center">Chapter 13. Getting hold of the data to be displayed</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="sect1" title="Reading data from a file"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2537882"></a>Reading data from a file</h2></div></div></div>
<p>The second method in order of complexity is to read the data from plain text
files. An example on how to use this was shown in <a class="xref" href="ch04s02.html#sec.preparing-sunspots-data" title="Preparing the data">Preparing the data</a>. The library contains utility
methods to ease reading of plain textual data in one of the following
formats:</p>
<p>
</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
<p>One column</p>
</li><li class="listitem">
<p>Two columns</p>
</li><li class="listitem">
<p>Comma separated values, CSV</p>
</li></ol></div><p>
</p>
<p>The utility class to handle this is called <code class="code">Class ReadFileData</code> and
contains three utility methods corresponding to the list above, they are
<code class="code">ReadFileData::From1Col()</code>, <code class="code">ReadFileData::From2Col()</code>,
<code class="code">ReadFileData::FromCSV()</code> and
<code class="code">ReadFileData::FromCSV2()</code>.</p>
<p>These methods are described shortly below</p>
<p>
</p><div class="variablelist"><dl><dt><span class="term"><code class="code">ReadFileData::From1Col($aFileName, $aCol1)</code></span></dt><dd>
<p>Reads data from a text file with one column of data and stores in
the supplied <code class="code">$aCol1</code> vector.</p>
<p>Typical data looks like</p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
2
3
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">123
14.5
19.2</span></pre></td></tr></table></div><p>
</p>
<p>which would result in </p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">$aCol == array(123, 14.5, 19,2)</span></pre></td></tr></table></div><p>
</p>
</dd><dt><span class="term"><code class="code">ReadFileData::From2Col($aFile, $aCol1, $aCol2, $aSepChar='
')</code></span></dt><dd>
<p>Reads data from a text file with two columns separated by the
specified character.</p>
<p>Typical data looks like</p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
2
3
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">12,15
13,34
14,27</span></pre></td></tr></table></div><p>
</p>
<p>which would result in</p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
2
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">$aCol1 == array(12,13,14);
$aCol2 == array(15,34,27);</span></pre></td></tr></table></div><p>
</p>
</dd><dt><span class="term">ReadFileData::FromCSV($aFile,&amp;$aData,$aSepChar=',',$aMaxLineLength=1024)</span></dt><dd>
<p>This method reads comma separated values from a specified file.
The values are all separeted by the specified character. This method
can be seen as a generalization of From1Col() method.</p>
<p>Typical data looks like</p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">12,34,56,18,19.7,55</span></pre></td></tr></table></div><p>
</p>
<p>which would result in</p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">$aData == array(12,34,56,18,19,7,55)</span></pre></td></tr></table></div><p>
</p>
</dd><dt><span class="term">ReadFileData::FromCSV2($aFile, &amp;$aData, $aOptions =
array())</span></dt><dd>
<p>This method also reads comma separated values from a file but with
more advanced options to control how the data is read. This can be
seen as a generalization of From2Col() method.</p>
<p>The possible options and there default values for this method
are</p>
<p>
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
<p>'separator' =&gt; ','</p>
</li><li class="listitem">
<p>'enclosure' =&gt; '"'</p>
</li><li class="listitem">
<p>'readlength' =&gt; 1024</p>
</li><li class="listitem">
<p>'ignore_first' =&gt; false</p>
</li><li class="listitem">
<p>'first_as_key' =&gt; false</p>
</li></ul></div><p>
</p>
<p>Typical data (using the default values)</p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
2
3
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">10,55
12,78
15,98</span></pre></td></tr></table></div><p>
</p>
<p>would result in</p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
2
3
4
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">$aData = array(
0 =&gt; array(10,12,15),
1 =&gt; array(55,78,98)
);</span></pre></td></tr></table></div><p>
</p>
<p>If 'first_as_key'=&gt;true and the data looks looks like</p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
2
3
4
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">&quot;key&quot;,&quot;value&quot;
10,55
12,78
15,98</span></pre></td></tr></table></div><p>
</p>
<p>the data would instead be read as</p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
2
3
4
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">$aData = array(
&quot;key&quot; =&gt; array(10,12,15),
&quot;value&quot; =&gt; array(55,78,98)
);</span></pre></td></tr></table></div><p>
</p>
</dd><dt><span class="term">ReadFileData::FromMatrix($aFile,$aSepChar=' ')</span></dt><dd>
<p>This method is especially suited o read matrix data from a file
for use with the Matrix visualization (described in <a class="xref" href="ch22.html" title="Chapter 22. Matrix graphs">Chapter 22. <i>Matrix graphs</i></a>). Each line in the file
corresponds to one row in the matrix.</p>
<p>Typical data can look like</p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
2
3
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">13,87,12
15,99,33
19,86,61</span></pre></td></tr></table></div><p>
</p>
<p>Which wold return a matrix looking like</p>
<p>
</p><div class="hl-main"><table class="hl-table" width="100%"><tr><td class="hl-gutter" align="right" valign="top"><pre>1
2
3
4
5
</pre></td><td class="hl-main" valign="top"><pre><span class="hl-code">array(
array(13,87,12),
array(15,99,33),
array(19,86,61)
);</span></pre></td></tr></table></div><p>
</p>
</dd></dl></div><p>
</p>
</div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"><a accesskey="u" href="ch13.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>