Blame view

site/jpgraph/docs/chunkhtml/ch22s03.html 6.08 KB
d72ac078   Guillaume   Ajout graphe V1.1
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
  <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Mesh interpolating of input data</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="ch22.html" title="Chapter 22. Matrix graphs"></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">Mesh interpolating of input data</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center">Chapter 22. Matrix graphs</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="sect1" title="Mesh interpolating of input data"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2591960"></a>Mesh interpolating of input data</h2></div></div></div>
          
          <p>By using mesh interpolation it is possible to obtain a "smoother" looking matrix plot
              by creating a "in-between" values in the original matrix by linear interpolation.</p>
          <p>
              </p><div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3>
                  <p>This is also used in contour plots. See <a class="xref" href="ch15s06.html#sec.grid-interpolating" title="Understanding mesh interpolation">Understanding mesh interpolation</a> for a more thorough discussion on
                      mesh interpolation and the implication of CPU usage.</p>
              </div><p>
          </p>
          <p>The interpolation factor specifies how many times, recursively, the interpolation
              should be done. Practical value ranges from 2-6. While it is possible to specify larger
              values than 6 the time it takes to do the interpolation will grow exponentially in the
              interpolation factor. It is also important to remember that this interpolation dos not
              create any "more" information than what is already available in the matrix. In addition
              it needs to be verified that such a linear interpolation of data is at all valid for the
              underlying data in the matrix. </p>
          <p>As an example the following figures show the effect of doing a 1-5 times interpolation
              of the original data (same as interpolation = 1). With the chosen graph size it is no
              point of interpolating further since doing 5 times interpolating will force the module
              to be 1x1 pixel in order to fit within the constraints of the graph. (The original data
              was 8x11 and interpolating it 5 times creates a 113x161 matrix)</p>
          <div class="informaltable">
              <table border="0"><colgroup><col class="c1"><col class="c2"><col class="c3"></colgroup><tbody><tr><td><span class="inlinemediaobject"><img src="images/matrix_mesh1.png"></span></td><td><span class="inlinemediaobject"><img src="images/matrix_mesh2.png"></span></td><td><span class="inlinemediaobject"><img src="images/matrix_mesh3.png"></span></td></tr><tr><td><span class="inlinemediaobject"><img src="images/matrix_mesh4.png"></span></td><td><span class="inlinemediaobject"><img src="images/matrix_mesh5.png"></span></td><td> </td></tr></tbody></table>
          </div>
          <p>The different sizes of the plot is due to the fact that each cell in the matrix must
              have an integer number of pixels. In the graphs above we have used the largest module
              size while still fitting in the image. Hence the different appearances.</p>
          <p>There are two ways of doing this interpolation. </p>
          <p>
              </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
                      <p>When the matrix plot is created by specifying the interpolation factor as
                          the second argument to the plot constructor, i.e.</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">$matrixplot = new MatrixPlot($data,4); // 4 times interpolation</span></pre></td></tr></table></div><p>
                      </p>
                  </li><li class="listitem">
                      <p>If many plots share the same data it is more efficient to do it once in
                          the beginning instead of doing the interpolation each time a new matrix plot
                          object is created. This can be done by using the utility function</p>
                      <p>
                          </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
                                  <p><code class="code">doMeshInterpolate(&amp;$aData, $aFactor)</code></p>
                              </li></ul></div><p>
                      </p>
                      <p>As can be seen from the declaration this is a call by reference method
                          where the data is replaced by the new data that has been interpolated the
                          specified number of times. This avoids unnecessary data copying for large
                          matrices.</p>
                  </li></ol></div><p>
          </p>
          <p>
              </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
                  <p>Those familiar with Matlab (tm) will recognize a similar mesh interpolation in
                      the <code class="code">interp2()</code> function.</p>
              </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="ch22.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>