source: sasview/_modules/sas/plottools/plottables.html @ a462c6a

gh-pages
Last change on this file since a462c6a was a462c6a, checked in by ajj, 9 years ago

Rebuild to fix index and modules docs

  • Property mode set to 100644
File size: 179.9 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5<html xmlns="http://www.w3.org/1999/xhtml">
6  <head>
7    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8   
9    <title>sas.plottools.plottables &mdash; SasView 3.0.0 documentation</title>
10   
11    <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
12    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
13   
14    <script type="text/javascript">
15      var DOCUMENTATION_OPTIONS = {
16        URL_ROOT:    '../../../',
17        VERSION:     '3.0.0',
18        COLLAPSE_INDEX: false,
19        FILE_SUFFIX: '.html',
20        HAS_SOURCE:  true
21      };
22    </script>
23    <script type="text/javascript" src="../../../_static/jquery.js"></script>
24    <script type="text/javascript" src="../../../_static/underscore.js"></script>
25    <script type="text/javascript" src="../../../_static/doctools.js"></script>
26    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
27    <link rel="top" title="SasView 3.0.0 documentation" href="../../../index.html" />
28    <link rel="up" title="Module code" href="../../index.html" /> 
29  </head>
30  <body>
31    <div class="related">
32      <h3>Navigation</h3>
33      <ul>
34        <li class="right" style="margin-right: 10px">
35          <a href="../../../genindex.html" title="General Index"
36             accesskey="I">index</a></li>
37        <li class="right" >
38          <a href="../../../py-modindex.html" title="Python Module Index"
39             >modules</a> |</li>
40        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
41          <li><a href="../../index.html" accesskey="U">Module code</a> &raquo;</li> 
42      </ul>
43    </div> 
44
45    <div class="document">
46      <div class="documentwrapper">
47        <div class="bodywrapper">
48          <div class="body">
49           
50  <h1>Source code for sas.plottools.plottables</h1><div class="highlight"><pre>
51<span class="sd">&quot;&quot;&quot;</span>
52<span class="sd">Prototype plottable object support.</span>
53
54<span class="sd">The main point of this prototype is to provide a clean separation between</span>
55<span class="sd">the style (plotter details: color, grids, widgets, etc.) and substance</span>
56<span class="sd">(application details: which information to plot).  Programmers should not be</span>
57<span class="sd">dictating line colours and plotting symbols.</span>
58
59<span class="sd">Unlike the problem of style in CSS or Word, where most paragraphs look</span>
60<span class="sd">the same, each line on a graph has to be distinguishable from its neighbours.</span>
61<span class="sd">Our solution is to provide parametric styles, in which a number of</span>
62<span class="sd">different classes of object (e.g., reflectometry data, reflectometry</span>
63<span class="sd">theory) representing multiple graph primitives cycle through a colour</span>
64<span class="sd">palette provided by the underlying plotter.</span>
65
66<span class="sd">A full treatment would provide perceptual dimensions of prominence and</span>
67<span class="sd">distinctiveness rather than a simple colour number.</span>
68
69<span class="sd">&quot;&quot;&quot;</span>
70
71<span class="c"># Design question: who owns the color?</span>
72<span class="c"># Is it a property of the plottable?</span>
73<span class="c"># Or of the plottable as it exists on the graph?</span>
74<span class="c"># Or if the graph?</span>
75<span class="c"># If a plottable can appear on multiple graphs, in some case the</span>
76<span class="c"># color should be the same on each graph in which it appears, and</span>
77<span class="c"># in other cases (where multiple plottables from different graphs</span>
78<span class="c"># coexist), the color should be assigned by the graph.  In any case</span>
79<span class="c"># once a plottable is placed on the graph its color should not</span>
80<span class="c"># depend on the other plottables on the graph.  Furthermore, if</span>
81<span class="c"># a plottable is added and removed from a graph and added again,</span>
82<span class="c"># it may be nice, but not necessary, to have the color persist.</span>
83<span class="c">#</span>
84<span class="c"># The safest approach seems to be to give ownership of color</span>
85<span class="c"># to the graph, which will allocate the colors along with the</span>
86<span class="c"># plottable.  The plottable will need to return the number of</span>
87<span class="c"># colors that are needed.</span>
88<span class="c">#</span>
89<span class="c"># The situation is less clear for symbols.  It is less clear</span>
90<span class="c"># how much the application requires that symbols be unique across</span>
91<span class="c"># all plots on the graph.</span>
92
93<span class="c"># Support for ancient python versions</span>
94<span class="kn">import</span> <span class="nn">copy</span>
95<span class="kn">import</span> <span class="nn">numpy</span>
96<span class="kn">import</span> <span class="nn">sys</span>
97
98
99<span class="k">if</span> <span class="s">&#39;any&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="n">__builtins__</span><span class="p">):</span>
100<div class="viewcode-block" id="any"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.any">[docs]</a>    <span class="k">def</span> <span class="nf">any</span><span class="p">(</span><span class="n">L</span><span class="p">):</span>
101        <span class="k">for</span> <span class="n">cond</span> <span class="ow">in</span> <span class="n">L</span><span class="p">:</span>
102            <span class="k">if</span> <span class="n">cond</span><span class="p">:</span>
103                <span class="k">return</span> <span class="bp">True</span>
104        <span class="k">return</span> <span class="bp">False</span>
105    </div>
106<div class="viewcode-block" id="all"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.all">[docs]</a>    <span class="k">def</span> <span class="nf">all</span><span class="p">(</span><span class="n">L</span><span class="p">):</span>
107        <span class="k">for</span> <span class="n">cond</span> <span class="ow">in</span> <span class="n">L</span><span class="p">:</span>
108            <span class="k">if</span> <span class="ow">not</span> <span class="n">cond</span><span class="p">:</span>
109                <span class="k">return</span> <span class="bp">False</span>
110        <span class="k">return</span> <span class="bp">True</span>
111
112</div>
113<div class="viewcode-block" id="Graph"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph">[docs]</a><span class="k">class</span> <span class="nc">Graph</span><span class="p">:</span>
114    <span class="sd">&quot;&quot;&quot;</span>
115<span class="sd">    Generic plottables graph structure.</span>
116<span class="sd">    </span>
117<span class="sd">    Plot styles are based on color/symbol lists.  The user gets to select</span>
118<span class="sd">    the list of colors/symbols/sizes to choose from, not the application</span>
119<span class="sd">    developer.  The programmer only gets to add/remove lines from the</span>
120<span class="sd">    plot and move to the next symbol/color.</span>
121
122<span class="sd">    Another dimension is prominence, which refers to line sizes/point sizes.</span>
123
124<span class="sd">    Axis transformations allow the user to select the coordinate view</span>
125<span class="sd">    which provides clarity to the data.  There is no way we can provide</span>
126<span class="sd">    every possible transformation for every application generically, so</span>
127<span class="sd">    the plottable objects themselves will need to provide the transformations.</span>
128<span class="sd">    Here are some examples from reflectometry: ::</span>
129<span class="sd">    </span>
130<span class="sd">       independent: x -&gt; f(x)</span>
131<span class="sd">          monitor scaling: y -&gt; M*y</span>
132<span class="sd">          log:  y -&gt; log(y if y &gt; min else min)</span>
133<span class="sd">          cos:  y -&gt; cos(y*pi/180)</span>
134<span class="sd">       dependent:   x -&gt; f(x,y)</span>
135<span class="sd">          Q4:      y -&gt; y*x^4</span>
136<span class="sd">          fresnel: y -&gt; y*fresnel(x)</span>
137<span class="sd">       coordinated: x,y = f(x,y)</span>
138<span class="sd">          Q:    x -&gt; 2*pi/L (cos(x*pi/180) - cos(y*pi/180))</span>
139<span class="sd">                y -&gt; 2*pi/L (sin(x*pi/180) + sin(y*pi/180))</span>
140<span class="sd">       reducing: x,y = f(x1,x2,y1,y2)</span>
141<span class="sd">          spin asymmetry: x -&gt; x1, y -&gt; (y1 - y2)/(y1 + y2)</span>
142<span class="sd">          vector net: x -&gt; x1, y -&gt; y1*cos(y2*pi/180)</span>
143<span class="sd">          </span>
144<span class="sd">    Multiple transformations are possible, such as Q4 spin asymmetry</span>
145
146<span class="sd">    Axes have further complications in that the units of what are being</span>
147<span class="sd">    plotted should correspond to the units on the axes.  Plotting multiple</span>
148<span class="sd">    types on the same graph should be handled gracefully, e.g., by creating</span>
149<span class="sd">    a separate tab for each available axis type, breaking into subplots,</span>
150<span class="sd">    showing multiple axes on the same plot, or generating inset plots.</span>
151<span class="sd">    Ultimately the decision should be left to the user.</span>
152
153<span class="sd">    Graph properties such as grids/crosshairs should be under user control,</span>
154<span class="sd">    as should the sizes of items such as axis fonts, etc.  No direct</span>
155<span class="sd">    access will be provided to the application.</span>
156
157<span class="sd">    Axis limits are mostly under user control.  If the user has zoomed or</span>
158<span class="sd">    panned then those limits are preserved even if new data is plotted.</span>
159<span class="sd">    The exception is when, e.g., scanning through a set of related lines</span>
160<span class="sd">    in which the user may want to fix the limits so that user can compare</span>
161<span class="sd">    the values directly.  Another exception is when creating multiple</span>
162<span class="sd">    graphs sharing the same limits, though this case may be important</span>
163<span class="sd">    enough that it is handled by the graph widget itself.  Axis limits</span>
164<span class="sd">    will of course have to understand the effects of axis transformations.</span>
165
166<span class="sd">    High level plottable objects may be composed of low level primitives.</span>
167<span class="sd">    Operations such as legend/hide/show copy/paste, etc. need to operate</span>
168<span class="sd">    on these primitives as a group.  E.g., allowing the user to have a</span>
169<span class="sd">    working canvas where they can drag lines they want to save and annotate</span>
170<span class="sd">    them.</span>
171
172<span class="sd">    Graphs need to be printable.  A page layout program for entire plots</span>
173<span class="sd">    would be nice.</span>
174<span class="sd">    </span>
175<span class="sd">    &quot;&quot;&quot;</span>
176    <span class="k">def</span> <span class="nf">_xaxis_transformed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">units</span><span class="p">):</span>
177        <span class="sd">&quot;&quot;&quot;</span>
178<span class="sd">        Change the property of the x axis</span>
179<span class="sd">        according to an axis transformation</span>
180<span class="sd">        (as opposed to changing the basic properties)</span>
181<span class="sd">        &quot;&quot;&quot;</span>
182        <span class="k">if</span> <span class="n">units</span> <span class="o">!=</span> <span class="s">&quot;&quot;</span><span class="p">:</span>
183            <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> (</span><span class="si">%s</span><span class="s">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">units</span><span class="p">)</span>
184        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;xlabel&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">name</span>
185        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;xunit&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">units</span>
186       
187    <span class="k">def</span> <span class="nf">_yaxis_transformed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">units</span><span class="p">):</span>
188        <span class="sd">&quot;&quot;&quot;</span>
189<span class="sd">        Change the property of the y axis</span>
190<span class="sd">        according to an axis transformation</span>
191<span class="sd">        (as opposed to changing the basic properties)</span>
192<span class="sd">        &quot;&quot;&quot;</span>
193        <span class="k">if</span> <span class="n">units</span> <span class="o">!=</span> <span class="s">&quot;&quot;</span><span class="p">:</span>
194            <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> (</span><span class="si">%s</span><span class="s">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">units</span><span class="p">)</span>
195        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;ylabel&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">name</span>
196        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;yunit&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">units</span>
197       
198<div class="viewcode-block" id="Graph.xaxis"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.xaxis">[docs]</a>    <span class="k">def</span> <span class="nf">xaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">units</span><span class="p">):</span>
199        <span class="sd">&quot;&quot;&quot;</span>
200<span class="sd">        Properties of the x axis.</span>
201<span class="sd">        &quot;&quot;&quot;</span>
202        <span class="k">if</span> <span class="n">units</span> <span class="o">!=</span> <span class="s">&quot;&quot;</span><span class="p">:</span>
203            <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> (</span><span class="si">%s</span><span class="s">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">units</span><span class="p">)</span>
204        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;xlabel&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">name</span>
205        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;xunit&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">units</span>
206        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;xlabel_base&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">name</span>
207        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;xunit_base&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">units</span>
208</div>
209<div class="viewcode-block" id="Graph.yaxis"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.yaxis">[docs]</a>    <span class="k">def</span> <span class="nf">yaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">units</span><span class="p">):</span>
210        <span class="sd">&quot;&quot;&quot;</span>
211<span class="sd">        Properties of the y axis.</span>
212<span class="sd">        &quot;&quot;&quot;</span>
213        <span class="k">if</span> <span class="n">units</span> <span class="o">!=</span> <span class="s">&quot;&quot;</span><span class="p">:</span>
214            <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> (</span><span class="si">%s</span><span class="s">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">units</span><span class="p">)</span>
215        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;ylabel&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">name</span>
216        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;yunit&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">units</span>
217        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;ylabel_base&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">name</span>
218        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;yunit_base&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">units</span>
219        </div>
220<div class="viewcode-block" id="Graph.title"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.title">[docs]</a>    <span class="k">def</span> <span class="nf">title</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
221        <span class="sd">&quot;&quot;&quot;</span>
222<span class="sd">        Graph title</span>
223<span class="sd">        &quot;&quot;&quot;</span>
224        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="s">&quot;title&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">name</span>
225        </div>
226<div class="viewcode-block" id="Graph.get"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.get">[docs]</a>    <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
227        <span class="sd">&quot;&quot;&quot;</span>
228<span class="sd">        Get the graph properties</span>
229<span class="sd">        &quot;&quot;&quot;</span>
230        <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;color&quot;</span><span class="p">:</span>
231            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">color</span>
232        <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;symbol&quot;</span><span class="p">:</span>
233            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">symbol</span>
234        <span class="k">else</span><span class="p">:</span>
235            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
236</div>
237<div class="viewcode-block" id="Graph.set"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.set">[docs]</a>    <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
238        <span class="sd">&quot;&quot;&quot;</span>
239<span class="sd">        Set the graph properties</span>
240<span class="sd">        &quot;&quot;&quot;</span>
241        <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">kw</span><span class="p">:</span>
242            <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;color&quot;</span><span class="p">:</span>
243                <span class="bp">self</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="n">kw</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">colorlist</span><span class="p">)</span>
244            <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;symbol&quot;</span><span class="p">:</span>
245                <span class="bp">self</span><span class="o">.</span><span class="n">symbol</span> <span class="o">=</span> <span class="n">kw</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">symbollist</span><span class="p">)</span>
246            <span class="k">else</span><span class="p">:</span>
247                <span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">kw</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
248</div>
249<div class="viewcode-block" id="Graph.isPlotted"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.isPlotted">[docs]</a>    <span class="k">def</span> <span class="nf">isPlotted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plottable</span><span class="p">):</span>
250        <span class="sd">&quot;&quot;&quot;Return True is the plottable is already on the graph&quot;&quot;&quot;</span>
251        <span class="k">if</span> <span class="n">plottable</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">:</span>
252            <span class="k">return</span> <span class="bp">True</span>
253        <span class="k">return</span> <span class="bp">False</span>
254</div>
255<div class="viewcode-block" id="Graph.add"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.add">[docs]</a>    <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plottable</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
256        <span class="sd">&quot;&quot;&quot;Add a new plottable to the graph&quot;&quot;&quot;</span>
257        <span class="c"># record the colour associated with the plottable</span>
258        <span class="k">if</span> <span class="ow">not</span> <span class="n">plottable</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">:</span>
259            <span class="k">if</span> <span class="n">color</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
260                <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">[</span><span class="n">plottable</span><span class="p">]</span> <span class="o">=</span> <span class="n">color</span>
261            <span class="k">else</span><span class="p">:</span>
262                <span class="bp">self</span><span class="o">.</span><span class="n">color</span> <span class="o">+=</span> <span class="n">plottable</span><span class="o">.</span><span class="n">colors</span><span class="p">()</span>
263                <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">[</span><span class="n">plottable</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">color</span>
264</div>
265<div class="viewcode-block" id="Graph.changed"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.changed">[docs]</a>    <span class="k">def</span> <span class="nf">changed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
266        <span class="sd">&quot;&quot;&quot;Detect if any graphed plottables have changed&quot;&quot;&quot;</span>
267        <span class="k">return</span> <span class="nb">any</span><span class="p">([</span><span class="n">p</span><span class="o">.</span><span class="n">changed</span><span class="p">()</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">])</span>
268    </div>
269<div class="viewcode-block" id="Graph.get_range"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.get_range">[docs]</a>    <span class="k">def</span> <span class="nf">get_range</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
270        <span class="sd">&quot;&quot;&quot;</span>
271<span class="sd">        Return the range of all displayed plottables</span>
272<span class="sd">        &quot;&quot;&quot;</span>
273        <span class="nb">min</span> <span class="o">=</span> <span class="bp">None</span>
274        <span class="nb">max</span> <span class="o">=</span> <span class="bp">None</span>
275        <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">:</span>
276            <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">hidden</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
277                <span class="k">continue</span>
278            <span class="k">if</span> <span class="ow">not</span> <span class="n">p</span><span class="o">.</span><span class="n">x</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
279                <span class="k">for</span> <span class="n">x_i</span> <span class="ow">in</span> <span class="n">p</span><span class="o">.</span><span class="n">x</span><span class="p">:</span>
280                    <span class="k">if</span> <span class="nb">min</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">x_i</span> <span class="o">&lt;</span> <span class="nb">min</span><span class="p">:</span>
281                        <span class="nb">min</span> <span class="o">=</span> <span class="n">x_i</span>
282                    <span class="k">if</span> <span class="nb">max</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">x_i</span> <span class="o">&gt;</span> <span class="nb">max</span><span class="p">:</span>
283                        <span class="nb">max</span> <span class="o">=</span> <span class="n">x_i</span>
284        <span class="k">return</span> <span class="nb">min</span><span class="p">,</span> <span class="nb">max</span>
285    </div>
286<div class="viewcode-block" id="Graph.replace"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.replace">[docs]</a>    <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plottable</span><span class="p">):</span>
287        <span class="sd">&quot;&quot;&quot;Replace an existing plottable from the graph&quot;&quot;&quot;</span>
288        <span class="n">selected_color</span> <span class="o">=</span> <span class="bp">None</span>
289        <span class="n">selected_plottable</span> <span class="o">=</span> <span class="bp">None</span>
290        <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
291            <span class="k">if</span> <span class="n">plottable</span><span class="o">.</span><span class="n">id</span> <span class="o">==</span> <span class="n">p</span><span class="o">.</span><span class="n">id</span><span class="p">:</span>
292                <span class="n">selected_plottable</span> <span class="o">=</span> <span class="n">p</span>
293                <span class="n">selected_color</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">[</span><span class="n">p</span><span class="p">]</span>
294                <span class="k">break</span>
295        <span class="k">if</span>  <span class="n">selected_plottable</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">selected_color</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
296            <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">[</span><span class="n">selected_plottable</span><span class="p">]</span>
297            <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">[</span><span class="n">plottable</span><span class="p">]</span> <span class="o">=</span> <span class="n">selected_color</span>
298</div>
299<div class="viewcode-block" id="Graph.delete"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.delete">[docs]</a>    <span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plottable</span><span class="p">):</span>
300        <span class="sd">&quot;&quot;&quot;Remove an existing plottable from the graph&quot;&quot;&quot;</span>
301        <span class="k">if</span> <span class="n">plottable</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">:</span>
302            <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">[</span><span class="n">plottable</span><span class="p">]</span>
303            <span class="bp">self</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">)</span>
304            </div>
305<div class="viewcode-block" id="Graph.reset_scale"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.reset_scale">[docs]</a>    <span class="k">def</span> <span class="nf">reset_scale</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
306        <span class="sd">&quot;&quot;&quot;</span>
307<span class="sd">        Resets the scale transformation data to the underlying data</span>
308<span class="sd">        &quot;&quot;&quot;</span>
309        <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">:</span>
310            <span class="n">p</span><span class="o">.</span><span class="n">reset_view</span><span class="p">()</span>
311</div>
312<div class="viewcode-block" id="Graph.reset"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.reset">[docs]</a>    <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
313        <span class="sd">&quot;&quot;&quot;Reset the graph.&quot;&quot;&quot;</span>
314        <span class="bp">self</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
315        <span class="bp">self</span><span class="o">.</span><span class="n">symbol</span> <span class="o">=</span> <span class="mi">0</span>
316        <span class="bp">self</span><span class="o">.</span><span class="n">prop</span> <span class="o">=</span> <span class="p">{</span><span class="s">&quot;xlabel&quot;</span><span class="p">:</span> <span class="s">&quot;&quot;</span><span class="p">,</span> <span class="s">&quot;xunit&quot;</span><span class="p">:</span> <span class="bp">None</span><span class="p">,</span>
317                     <span class="s">&quot;ylabel&quot;</span><span class="p">:</span> <span class="s">&quot;&quot;</span><span class="p">,</span> <span class="s">&quot;yunit&quot;</span><span class="p">:</span> <span class="bp">None</span><span class="p">,</span>
318                     <span class="s">&quot;title&quot;</span><span class="p">:</span> <span class="s">&quot;&quot;</span><span class="p">}</span>
319        <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span> <span class="o">=</span> <span class="p">{}</span>
320    </div>
321    <span class="k">def</span> <span class="nf">_make_labels</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
322        <span class="sd">&quot;&quot;&quot;</span>
323<span class="sd">        &quot;&quot;&quot;</span>
324        <span class="c"># Find groups of related plottables</span>
325        <span class="n">sets</span> <span class="o">=</span> <span class="p">{}</span>
326        <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">:</span>
327            <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">__class__</span> <span class="ow">in</span> <span class="n">sets</span><span class="p">:</span>
328                <span class="n">sets</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="n">__class__</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
329            <span class="k">else</span><span class="p">:</span>
330                <span class="n">sets</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="n">__class__</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">p</span><span class="p">]</span>
331        <span class="c"># Ask each plottable class for a set of unique labels</span>
332        <span class="n">labels</span> <span class="o">=</span> <span class="p">{}</span>
333        <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">sets</span><span class="p">:</span>
334            <span class="n">labels</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">labels</span><span class="p">(</span><span class="n">sets</span><span class="p">[</span><span class="n">c</span><span class="p">]))</span>
335        <span class="k">return</span> <span class="n">labels</span>
336   
337<div class="viewcode-block" id="Graph.get_plottable"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.get_plottable">[docs]</a>    <span class="k">def</span> <span class="nf">get_plottable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
338        <span class="sd">&quot;&quot;&quot;</span>
339<span class="sd">        Return the plottable with the given</span>
340<span class="sd">        name if it exists. Otherwise return None</span>
341<span class="sd">        &quot;&quot;&quot;</span>
342        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">:</span>
343            <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="n">name</span><span class="p">:</span>
344                <span class="k">return</span> <span class="n">item</span>
345        <span class="k">return</span> <span class="bp">None</span>
346    </div>
347<div class="viewcode-block" id="Graph.returnPlottable"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.returnPlottable">[docs]</a>    <span class="k">def</span> <span class="nf">returnPlottable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
348        <span class="sd">&quot;&quot;&quot;</span>
349<span class="sd">        This method returns a dictionary of plottables contained in graph</span>
350<span class="sd">        It is just by Plotpanel to interact with the complete list of plottables</span>
351<span class="sd">        inside the graph.</span>
352<span class="sd">        &quot;&quot;&quot;</span>
353        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span>
354    </div>
355<div class="viewcode-block" id="Graph.render"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Graph.render">[docs]</a>    <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">plot</span><span class="p">):</span>
356        <span class="sd">&quot;&quot;&quot;Redraw the graph&quot;&quot;&quot;</span>
357        <span class="n">plot</span><span class="o">.</span><span class="n">connect</span><span class="o">.</span><span class="n">clearall</span><span class="p">()</span>
358        <span class="n">plot</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
359        <span class="n">plot</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prop</span><span class="p">)</span>
360        <span class="n">labels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_labels</span><span class="p">()</span>
361        <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">:</span>
362            <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">custom_color</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
363                <span class="n">p</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">plot</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">custom_color</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
364                <span class="n">markersize</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">markersize</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">labels</span><span class="p">[</span><span class="n">p</span><span class="p">])</span>
365            <span class="k">else</span><span class="p">:</span>
366                <span class="n">p</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">plot</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">plottables</span><span class="p">[</span><span class="n">p</span><span class="p">],</span> <span class="n">symbol</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
367                     <span class="n">markersize</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">markersize</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">labels</span><span class="p">[</span><span class="n">p</span><span class="p">])</span>
368        <span class="n">plot</span><span class="o">.</span><span class="n">render</span><span class="p">()</span>
369   </div>
370    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
371        <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span>
372        <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="o">**</span><span class="n">kw</span><span class="p">)</span>
373        <span class="c"># Name of selected plottable, if any</span>
374        <span class="bp">self</span><span class="o">.</span><span class="n">selected_plottable</span> <span class="o">=</span> <span class="bp">None</span>
375
376
377<span class="c"># Transform interface definition</span>
378<span class="c"># No need to inherit from this class, just need to provide</span>
379<span class="c"># the same methods.</span></div>
380<div class="viewcode-block" id="Transform"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Transform">[docs]</a><span class="k">class</span> <span class="nc">Transform</span><span class="p">:</span>
381    <span class="sd">&quot;&quot;&quot;</span>
382<span class="sd">    Define a transform plugin to the plottable architecture.</span>
383<span class="sd">    </span>
384<span class="sd">    Transforms operate on axes.  The plottable defines the</span>
385<span class="sd">    set of transforms available for it, and the axes on which</span>
386<span class="sd">    they operate.  These transforms can operate on the x axis</span>
387<span class="sd">    only, the y axis only or on the x and y axes together.</span>
388<span class="sd">    </span>
389<span class="sd">    This infrastructure is not able to support transformations</span>
390<span class="sd">    such as log and polar plots as these require full control</span>
391<span class="sd">    over the drawing of axes and grids.</span>
392<span class="sd">    </span>
393<span class="sd">    A transform has a number of attributes.</span>
394<span class="sd">    </span>
395<span class="sd">    name</span>
396<span class="sd">      user visible name for the transform.  This will</span>
397<span class="sd">      appear in the context menu for the axis and the transform</span>
398<span class="sd">      menu for the graph.</span>
399<span class="sd">        </span>
400<span class="sd">    type</span>
401<span class="sd">      operational axis.  This determines whether the</span>
402<span class="sd">      transform should appear on x,y or z axis context</span>
403<span class="sd">      menus, or if it should appear in the context menu for</span>
404<span class="sd">      the graph.</span>
405<span class="sd">        </span>
406<span class="sd">    inventory</span>
407<span class="sd">      (not implemented) </span>
408<span class="sd">      a dictionary of user settable parameter names and</span>
409<span class="sd">      their associated types.  These should appear as keyword</span>
410<span class="sd">      arguments to the transform call.  For example, Fresnel</span>
411<span class="sd">      reflectivity requires the substrate density:</span>
412<span class="sd">      ``{ &#39;rho&#39;: type.Value(10e-6/units.angstrom**2) }``       </span>
413<span class="sd">      Supply reasonable defaults in the callback so that</span>
414<span class="sd">      limited plotting clients work even though they cannot</span>
415<span class="sd">      set the inventory.</span>
416<span class="sd">        </span>
417<span class="sd">    &quot;&quot;&quot;</span>
418    <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plottable</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
419        <span class="sd">&quot;&quot;&quot;</span>
420<span class="sd">        Transform the data.  Whenever a plottable is added</span>
421<span class="sd">        to the axes, the infrastructure will apply all required</span>
422<span class="sd">        transforms.  When the user selects a different representation</span>
423<span class="sd">        for the axes (via menu, script, or context menu), all</span>
424<span class="sd">        plottables on the axes will be transformed.  The</span>
425<span class="sd">        plottable should store the underlying data but set</span>
426<span class="sd">        the standard x,dx,y,dy,z,dz attributes appropriately.</span>
427<span class="sd">        </span>
428<span class="sd">        If the call raises a NotImplemented error the dataline</span>
429<span class="sd">        will not be plotted.  The associated string will usually</span>
430<span class="sd">        be &#39;Not a valid transform&#39;, though other strings are possible.</span>
431<span class="sd">        The application may or may not display the message to the</span>
432<span class="sd">        user, along with an indication of which plottable was at fault.</span>
433<span class="sd">        </span>
434<span class="sd">        &quot;&quot;&quot;</span>
435        <span class="k">raise</span> <span class="bp">NotImplemented</span><span class="p">,</span> <span class="s">&quot;Not a valid transform&quot;</span>
436
437    <span class="c"># Related issues</span>
438    <span class="c"># ==============</span>
439    <span class="c">#</span>
440    <span class="c"># log scale:</span>
441    <span class="c">#    All axes have implicit log/linear scaling options.</span>
442    <span class="c">#</span>
443    <span class="c"># normalization:</span>
444    <span class="c">#    Want to display raw counts vs detector efficiency correction</span>
445    <span class="c">#    Want to normalize by time/monitor/proton current/intensity.</span>
446    <span class="c">#    Want to display by eg. counts per 3 sec or counts per 10000 monitor.</span>
447    <span class="c">#    Want to divide by footprint (ab initio, fitted or measured).</span>
448    <span class="c">#    Want to scale by attenuator values.</span>
449    <span class="c">#</span>
450    <span class="c"># compare/contrast:</span>
451    <span class="c">#    Want to average all visible lines with the same tag, and</span>
452    <span class="c">#    display difference from one particular line.  Not a transform</span>
453    <span class="c">#    issue?</span>
454    <span class="c">#</span>
455    <span class="c"># multiline graph:</span>
456    <span class="c">#    How do we show/hide data parts.  E.g., data or theory, or</span>
457    <span class="c">#    different polarization cross sections?  One way is with</span>
458    <span class="c">#    tags: each plottable has a set of tags and the tags are</span>
459    <span class="c">#    listed as check boxes above the plotting area.  Click a</span>
460    <span class="c">#    tag and all plottables with that tag are hidden on the</span>
461    <span class="c">#    plot and on the legend.</span>
462    <span class="c">#</span>
463    <span class="c"># nonconformant y-axes:</span>
464    <span class="c">#    What do we do with temperature vs. Q and reflectivity vs. Q</span>
465    <span class="c">#    on the same graph?</span>
466    <span class="c">#</span>
467    <span class="c"># 2D -&gt; 1D:</span>
468    <span class="c">#    Want various slices through the data.  Do transforms apply</span>
469    <span class="c">#    to the sliced data as well?</span>
470
471</div>
472<div class="viewcode-block" id="Plottable"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable">[docs]</a><span class="k">class</span> <span class="nc">Plottable</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
473    <span class="sd">&quot;&quot;&quot;</span>
474<span class="sd">    &quot;&quot;&quot;</span>
475    <span class="c"># Short ascii name to refer to the plottable in a menu</span>
476    <span class="n">short_name</span> <span class="o">=</span> <span class="bp">None</span>
477    <span class="c"># Fancy name</span>
478    <span class="n">name</span> <span class="o">=</span> <span class="bp">None</span>
479    <span class="c"># Data</span>
480    <span class="n">x</span>  <span class="o">=</span> <span class="bp">None</span>
481    <span class="n">y</span>  <span class="o">=</span> <span class="bp">None</span>
482    <span class="n">dx</span> <span class="o">=</span> <span class="bp">None</span>
483    <span class="n">dy</span> <span class="o">=</span> <span class="bp">None</span>
484    <span class="c"># Parameter to allow a plot to be part of the list without being displayed</span>
485    <span class="n">hidden</span> <span class="o">=</span> <span class="bp">False</span>
486    <span class="c"># Flag to set whether a plottable has an interactor or not</span>
487    <span class="n">interactive</span> <span class="o">=</span> <span class="bp">True</span>
488    <span class="n">custom_color</span> <span class="o">=</span> <span class="bp">None</span>
489    <span class="n">markersize</span> <span class="o">=</span> <span class="mi">5</span>  <span class="c"># default marker size is &#39;size 5&#39;</span>
490   
491    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
492        <span class="bp">self</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">View</span><span class="p">()</span>
493        <span class="bp">self</span><span class="o">.</span><span class="n">_xaxis</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
494        <span class="bp">self</span><span class="o">.</span><span class="n">_xunit</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
495        <span class="bp">self</span><span class="o">.</span><span class="n">_yaxis</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
496        <span class="bp">self</span><span class="o">.</span><span class="n">_yunit</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
497       
498    <span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
499        <span class="sd">&quot;&quot;&quot;</span>
500<span class="sd">        Take care of changes in View when data is changed.</span>
501<span class="sd">        This method is provided for backward compatibility.</span>
502<span class="sd">        &quot;&quot;&quot;</span>
503        <span class="nb">object</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
504        <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">,</span> <span class="s">&#39;dx&#39;</span><span class="p">,</span> <span class="s">&#39;dy&#39;</span><span class="p">]:</span>
505            <span class="bp">self</span><span class="o">.</span><span class="n">reset_view</span><span class="p">()</span>
506            <span class="c">#print &quot;self.%s has been called&quot; % name</span>
507
508<div class="viewcode-block" id="Plottable.set_data"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.set_data">[docs]</a>    <span class="k">def</span> <span class="nf">set_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">dx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
509        <span class="sd">&quot;&quot;&quot;</span>
510<span class="sd">        &quot;&quot;&quot;</span>
511        <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
512        <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span>
513        <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">dy</span>
514        <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">dx</span>
515        <span class="bp">self</span><span class="o">.</span><span class="n">transformView</span><span class="p">()</span>
516    </div>
517<div class="viewcode-block" id="Plottable.xaxis"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.xaxis">[docs]</a>    <span class="k">def</span> <span class="nf">xaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">units</span><span class="p">):</span>
518        <span class="sd">&quot;&quot;&quot;</span>
519<span class="sd">        Set the name and unit of x_axis</span>
520<span class="sd">        </span>
521<span class="sd">        :param name: the name of x-axis</span>
522<span class="sd">        :param units: the units of x_axis</span>
523<span class="sd">        </span>
524<span class="sd">        &quot;&quot;&quot;</span>
525        <span class="bp">self</span><span class="o">.</span><span class="n">_xaxis</span> <span class="o">=</span> <span class="n">name</span>
526        <span class="bp">self</span><span class="o">.</span><span class="n">_xunit</span> <span class="o">=</span> <span class="n">units</span>
527</div>
528<div class="viewcode-block" id="Plottable.yaxis"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.yaxis">[docs]</a>    <span class="k">def</span> <span class="nf">yaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">units</span><span class="p">):</span>
529        <span class="sd">&quot;&quot;&quot;</span>
530<span class="sd">        Set the name and unit of y_axis</span>
531<span class="sd">        </span>
532<span class="sd">        :param name: the name of y-axis</span>
533<span class="sd">        :param units: the units of y_axis</span>
534<span class="sd">        </span>
535<span class="sd">        &quot;&quot;&quot;</span>
536        <span class="bp">self</span><span class="o">.</span><span class="n">_yaxis</span> <span class="o">=</span> <span class="n">name</span>
537        <span class="bp">self</span><span class="o">.</span><span class="n">_yunit</span> <span class="o">=</span> <span class="n">units</span>
538        </div>
539<div class="viewcode-block" id="Plottable.get_xaxis"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.get_xaxis">[docs]</a>    <span class="k">def</span> <span class="nf">get_xaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
540        <span class="sd">&quot;&quot;&quot;Return the units and name of x-axis&quot;&quot;&quot;</span>
541        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xaxis</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xunit</span>
542    </div>
543<div class="viewcode-block" id="Plottable.get_yaxis"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.get_yaxis">[docs]</a>    <span class="k">def</span> <span class="nf">get_yaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
544        <span class="sd">&quot;&quot;&quot; Return the units and name of y- axis&quot;&quot;&quot;</span>
545        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_yaxis</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_yunit</span>
546</div>
547    <span class="nd">@classmethod</span>
548<div class="viewcode-block" id="Plottable.labels"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.labels">[docs]</a>    <span class="k">def</span> <span class="nf">labels</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">collection</span><span class="p">):</span>
549        <span class="sd">&quot;&quot;&quot;</span>
550<span class="sd">        Construct a set of unique labels for a collection of plottables of</span>
551<span class="sd">        the same type.</span>
552<span class="sd">        </span>
553<span class="sd">        Returns a map from plottable to name.</span>
554<span class="sd">        </span>
555<span class="sd">        &quot;&quot;&quot;</span>
556        <span class="n">n</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">collection</span><span class="p">)</span>
557        <span class="nb">map</span> <span class="o">=</span> <span class="p">{}</span>
558        <span class="k">if</span> <span class="n">n</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
559            <span class="n">basename</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">cls</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;.&#39;</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
560            <span class="k">if</span> <span class="n">n</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
561                <span class="nb">map</span><span class="p">[</span><span class="n">collection</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">basename</span>
562            <span class="k">else</span><span class="p">:</span>
563                <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">collection</span><span class="p">)):</span>
564                    <span class="nb">map</span><span class="p">[</span><span class="n">collection</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> </span><span class="si">%d</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">basename</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
565        <span class="k">return</span> <span class="nb">map</span>
566
567    <span class="c">##Use the following if @classmethod doesn&#39;t work</span>
568    <span class="c"># labels = classmethod(labels)</span></div>
569<div class="viewcode-block" id="Plottable.setLabel"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.setLabel">[docs]</a>    <span class="k">def</span> <span class="nf">setLabel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">labelx</span><span class="p">,</span> <span class="n">labely</span><span class="p">):</span>
570        <span class="sd">&quot;&quot;&quot;</span>
571<span class="sd">        It takes a label of the x and y transformation and set View parameters</span>
572<span class="sd">        </span>
573<span class="sd">        :param transx: The label of x transformation is sent by Properties Dialog</span>
574<span class="sd">        :param transy: The label of y transformation is sent Properties Dialog</span>
575<span class="sd">        </span>
576<span class="sd">        &quot;&quot;&quot;</span>
577        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">xLabel</span> <span class="o">=</span> <span class="n">labelx</span>
578        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">yLabel</span> <span class="o">=</span> <span class="n">labely</span>
579    </div>
580<div class="viewcode-block" id="Plottable.set_View"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.set_View">[docs]</a>    <span class="k">def</span> <span class="nf">set_View</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
581        <span class="sd">&quot;&quot;&quot;Load View&quot;&quot;&quot;</span>
582        <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
583        <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span>
584        <span class="bp">self</span><span class="o">.</span><span class="n">reset_view</span><span class="p">()</span>
585        </div>
586<div class="viewcode-block" id="Plottable.reset_view"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.reset_view">[docs]</a>    <span class="k">def</span> <span class="nf">reset_view</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
587        <span class="sd">&quot;&quot;&quot;Reload view with new value to plot&quot;&quot;&quot;</span>
588        <span class="bp">self</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">View</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span><span class="p">)</span>
589        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">Xreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">x</span>
590        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">Yreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">y</span>
591        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">DXreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">dx</span>
592        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">DYreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">dy</span>
593        </div>
594<div class="viewcode-block" id="Plottable.render"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.render">[docs]</a>    <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plot</span><span class="p">):</span>
595        <span class="sd">&quot;&quot;&quot;</span>
596<span class="sd">        The base class makes sure the correct units are being used for</span>
597<span class="sd">        subsequent plottable.</span>
598<span class="sd">        </span>
599<span class="sd">        For now it is assumed that the graphs are commensurate, and if you</span>
600<span class="sd">        put a Qx object on a Temperature graph then you had better hope </span>
601<span class="sd">        that it makes sense.</span>
602<span class="sd">        </span>
603<span class="sd">        &quot;&quot;&quot;</span>
604        <span class="n">plot</span><span class="o">.</span><span class="n">xaxis</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_xaxis</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xunit</span><span class="p">)</span>
605        <span class="n">plot</span><span class="o">.</span><span class="n">yaxis</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_yaxis</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_yunit</span><span class="p">)</span>
606        </div>
607<div class="viewcode-block" id="Plottable.is_empty"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.is_empty">[docs]</a>    <span class="k">def</span> <span class="nf">is_empty</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
608        <span class="sd">&quot;&quot;&quot;</span>
609<span class="sd">        Returns True if there is no data stored in the plottable</span>
610<span class="sd">        &quot;&quot;&quot;</span>
611        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> \
612            <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
613            <span class="k">return</span> <span class="bp">True</span>
614        <span class="k">return</span> <span class="bp">False</span>
615        </div>
616<div class="viewcode-block" id="Plottable.colors"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.colors">[docs]</a>    <span class="k">def</span> <span class="nf">colors</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
617        <span class="sd">&quot;&quot;&quot;Return the number of colors need to render the object&quot;&quot;&quot;</span>
618        <span class="k">return</span> <span class="mi">1</span>
619    </div>
620<div class="viewcode-block" id="Plottable.transformView"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.transformView">[docs]</a>    <span class="k">def</span> <span class="nf">transformView</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
621        <span class="sd">&quot;&quot;&quot;</span>
622<span class="sd">        It transforms x, y before displaying</span>
623<span class="sd">        &quot;&quot;&quot;</span>
624        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span><span class="p">)</span>
625        </div>
626<div class="viewcode-block" id="Plottable.returnValuesOfView"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.returnValuesOfView">[docs]</a>    <span class="k">def</span> <span class="nf">returnValuesOfView</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
627        <span class="sd">&quot;&quot;&quot;</span>
628<span class="sd">        Return View parameters and it is used by Fit Dialog</span>
629<span class="sd">        &quot;&quot;&quot;</span>
630        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">returnXview</span><span class="p">()</span>
631    </div>
632<div class="viewcode-block" id="Plottable.check_data_PlottableX"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.check_data_PlottableX">[docs]</a>    <span class="k">def</span> <span class="nf">check_data_PlottableX</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
633        <span class="sd">&quot;&quot;&quot;</span>
634<span class="sd">        Since no transformation is made for log10(x), check that</span>
635<span class="sd">        no negative values is plot in log scale</span>
636<span class="sd">        &quot;&quot;&quot;</span>
637        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">check_data_logX</span><span class="p">()</span>
638        </div>
639<div class="viewcode-block" id="Plottable.check_data_PlottableY"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.check_data_PlottableY">[docs]</a>    <span class="k">def</span> <span class="nf">check_data_PlottableY</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
640        <span class="sd">&quot;&quot;&quot;</span>
641<span class="sd">        Since no transformation is made for log10(y), check that </span>
642<span class="sd">        no negative values is plot in log scale</span>
643<span class="sd">        &quot;&quot;&quot;</span>
644        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">check_data_logY</span><span class="p">()</span>
645        </div>
646<div class="viewcode-block" id="Plottable.transformX"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.transformX">[docs]</a>    <span class="k">def</span> <span class="nf">transformX</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">transx</span><span class="p">,</span> <span class="n">transdx</span><span class="p">):</span>
647        <span class="sd">&quot;&quot;&quot;</span>
648<span class="sd">        Receive pointers to function that transform x and dx</span>
649<span class="sd">        and set corresponding View pointers</span>
650<span class="sd">        </span>
651<span class="sd">        :param transx: pointer to function that transforms x</span>
652<span class="sd">        :param transdx: pointer to function that transforms dx</span>
653<span class="sd">        </span>
654<span class="sd">        &quot;&quot;&quot;</span>
655        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">setTransformX</span><span class="p">(</span><span class="n">transx</span><span class="p">,</span> <span class="n">transdx</span><span class="p">)</span>
656        </div>
657<div class="viewcode-block" id="Plottable.transformY"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.transformY">[docs]</a>    <span class="k">def</span> <span class="nf">transformY</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">transy</span><span class="p">,</span> <span class="n">transdy</span><span class="p">):</span>
658        <span class="sd">&quot;&quot;&quot;</span>
659<span class="sd">        Receive pointers to function that transform y and dy</span>
660<span class="sd">        and set corresponding View pointers</span>
661<span class="sd">        </span>
662<span class="sd">        :param transy: pointer to function that transforms y</span>
663<span class="sd">        :param transdy: pointer to function that transforms dy</span>
664<span class="sd">        </span>
665<span class="sd">        &quot;&quot;&quot;</span>
666        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">setTransformY</span><span class="p">(</span><span class="n">transy</span><span class="p">,</span> <span class="n">transdy</span><span class="p">)</span>
667        </div>
668<div class="viewcode-block" id="Plottable.onReset"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.onReset">[docs]</a>    <span class="k">def</span> <span class="nf">onReset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
669        <span class="sd">&quot;&quot;&quot;</span>
670<span class="sd">        Reset x, y, dx, dy view with its parameters</span>
671<span class="sd">        &quot;&quot;&quot;</span>
672        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">onResetView</span><span class="p">()</span>
673        </div>
674<div class="viewcode-block" id="Plottable.onFitRange"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Plottable.onFitRange">[docs]</a>    <span class="k">def</span> <span class="nf">onFitRange</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xmin</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">xmax</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
675        <span class="sd">&quot;&quot;&quot;</span>
676<span class="sd">        It limits View data range to plot from min to max</span>
677<span class="sd">        </span>
678<span class="sd">        :param xmin: the minimum value of x to plot.</span>
679<span class="sd">        :param xmax: the maximum value of x to plot</span>
680<span class="sd">        </span>
681<span class="sd">        &quot;&quot;&quot;</span>
682        <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">onFitRangeView</span><span class="p">(</span><span class="n">xmin</span><span class="p">,</span> <span class="n">xmax</span><span class="p">)</span>
683   
684    </div></div>
685<div class="viewcode-block" id="View"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.View">[docs]</a><span class="k">class</span> <span class="nc">View</span><span class="p">:</span>
686    <span class="sd">&quot;&quot;&quot;</span>
687<span class="sd">    Representation of the data that might include a transformation</span>
688<span class="sd">    &quot;&quot;&quot;</span>
689    <span class="n">x</span> <span class="o">=</span> <span class="bp">None</span>
690    <span class="n">y</span> <span class="o">=</span> <span class="bp">None</span>
691    <span class="n">dx</span> <span class="o">=</span> <span class="bp">None</span>
692    <span class="n">dy</span> <span class="o">=</span> <span class="bp">None</span>
693
694    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
695        <span class="sd">&quot;&quot;&quot;</span>
696<span class="sd">        &quot;&quot;&quot;</span>
697        <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
698        <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span>
699        <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">dx</span>
700        <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">dy</span>
701        <span class="c"># To change x range to the reel range</span>
702        <span class="bp">self</span><span class="o">.</span><span class="n">Xreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span>
703        <span class="bp">self</span><span class="o">.</span><span class="n">Yreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span>
704        <span class="bp">self</span><span class="o">.</span><span class="n">DXreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span>
705        <span class="bp">self</span><span class="o">.</span><span class="n">DYreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span>
706        <span class="c"># Labels of x and y received from Properties Dialog</span>
707        <span class="bp">self</span><span class="o">.</span><span class="n">xLabel</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
708        <span class="bp">self</span><span class="o">.</span><span class="n">yLabel</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
709        <span class="c"># Function to transform x, y, dx and dy</span>
710        <span class="bp">self</span><span class="o">.</span><span class="n">funcx</span> <span class="o">=</span> <span class="bp">None</span>
711        <span class="bp">self</span><span class="o">.</span><span class="n">funcy</span> <span class="o">=</span> <span class="bp">None</span>
712        <span class="bp">self</span><span class="o">.</span><span class="n">funcdx</span> <span class="o">=</span> <span class="bp">None</span>
713        <span class="bp">self</span><span class="o">.</span><span class="n">funcdy</span> <span class="o">=</span> <span class="bp">None</span>
714
715<div class="viewcode-block" id="View.transform"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.View.transform">[docs]</a>    <span class="k">def</span> <span class="nf">transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
716        <span class="sd">&quot;&quot;&quot;</span>
717<span class="sd">        Transforms the x,y,dx and dy vectors and stores</span>
718<span class="sd">         the output in View parameters</span>
719
720<span class="sd">        :param x: array of x values</span>
721<span class="sd">        :param y: array of y values</span>
722<span class="sd">        :param dx: array of  errors values on x</span>
723<span class="sd">        :param dy: array of error values on y</span>
724<span class="sd">        </span>
725<span class="sd">        &quot;&quot;&quot;</span>
726        <span class="c"># Sanity check</span>
727        <span class="c"># Do the transofrmation only when x and y are empty</span>
728        <span class="n">has_err_x</span> <span class="o">=</span> <span class="ow">not</span> <span class="p">(</span><span class="n">dx</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">dx</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
729        <span class="n">has_err_y</span> <span class="o">=</span> <span class="ow">not</span> <span class="p">(</span><span class="n">dy</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">dy</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
730       
731        <span class="k">if</span><span class="p">(</span><span class="n">x</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">y</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">):</span>
732            <span class="k">if</span> <span class="ow">not</span> <span class="n">dx</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">dx</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">dx</span><span class="p">):</span>
733                <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Plottable.View: Given x and dx are not&quot;</span>
734                <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot; of the same length&quot;</span>
735                <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
736            <span class="c"># Check length of y array</span>
737            <span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
738                <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Plottable.View: Given y &quot;</span>
739                <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;and x are not of the same length&quot;</span>
740                <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
741       
742            <span class="k">if</span> <span class="ow">not</span> <span class="n">dy</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">dy</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">dy</span><span class="p">):</span>
743                <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Plottable.View: Given y and dy are not of the same &quot;</span>
744                <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;length: len(y)=</span><span class="si">%s</span><span class="s">, len(dy)=</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">dy</span><span class="p">))</span>
745                <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
746            <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="p">[]</span>
747            <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="p">[]</span>
748            <span class="k">if</span> <span class="n">has_err_x</span><span class="p">:</span>
749                <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="p">[]</span>
750            <span class="k">else</span><span class="p">:</span>
751                <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="bp">None</span>
752            <span class="k">if</span> <span class="n">has_err_y</span><span class="p">:</span>
753                <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="p">[]</span>
754            <span class="k">else</span><span class="p">:</span>
755                <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="bp">None</span>
756            <span class="n">tempx</span> <span class="o">=</span> <span class="p">[]</span>
757            <span class="n">tempy</span> <span class="o">=</span> <span class="p">[]</span>
758            <span class="k">if</span> <span class="ow">not</span> <span class="n">has_err_x</span><span class="p">:</span>
759                <span class="n">dx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
760            <span class="k">if</span> <span class="ow">not</span> <span class="n">has_err_y</span><span class="p">:</span>
761                <span class="n">dy</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
762            <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)):</span>
763                <span class="k">try</span><span class="p">:</span>
764                    <span class="n">tempx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">funcx</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
765                    <span class="n">tempy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">funcy</span><span class="p">(</span><span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
766                    <span class="k">if</span> <span class="n">has_err_x</span><span class="p">:</span>
767                        <span class="n">tempdx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">funcdx</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">dy</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
768                    <span class="k">if</span> <span class="n">has_err_y</span><span class="p">:</span>
769                        <span class="n">tempdy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">funcdy</span><span class="p">(</span><span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">dy</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
770                    <span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tempx</span><span class="p">)</span>
771                    <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tempy</span><span class="p">)</span>
772                    <span class="k">if</span> <span class="n">has_err_x</span><span class="p">:</span>
773                        <span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tempdx</span><span class="p">)</span>
774                    <span class="k">if</span> <span class="n">has_err_y</span><span class="p">:</span>
775                        <span class="bp">self</span><span class="o">.</span><span class="n">dy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tempdy</span><span class="p">)</span>
776                <span class="k">except</span><span class="p">:</span>
777                    <span class="n">tempx</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
778                    <span class="n">tempy</span> <span class="o">=</span> <span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
779                    <span class="n">tempdy</span> <span class="o">=</span> <span class="n">dy</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
780            <span class="c"># Sanity check</span>
781            <span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">):</span>
782                <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Plottable.View: transformed x &quot;</span>
783                <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;and y are not of the same length&quot;</span>
784                <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
785            <span class="k">if</span> <span class="n">has_err_x</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">)):</span>
786                <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Plottable.View: transformed x and dx&quot;</span>
787                <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot; are not of the same length&quot;</span>
788                <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
789            <span class="k">if</span> <span class="n">has_err_y</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dy</span><span class="p">)):</span>
790                <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Plottable.View: transformed y&quot;</span>
791                <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot; and dy are not of the same length&quot;</span>
792                <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
793            <span class="c"># Check that negative values are not plot on x and y axis for</span>
794            <span class="c"># log10 transformation</span>
795            <span class="bp">self</span><span class="o">.</span><span class="n">check_data_logX</span><span class="p">()</span>
796            <span class="bp">self</span><span class="o">.</span><span class="n">check_data_logY</span><span class="p">()</span>
797            <span class="c"># Store x ,y dx,and dy in their full range for reset</span>
798            <span class="bp">self</span><span class="o">.</span><span class="n">Xreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span>
799            <span class="bp">self</span><span class="o">.</span><span class="n">Yreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span>
800            <span class="bp">self</span><span class="o">.</span><span class="n">DXreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span>
801            <span class="bp">self</span><span class="o">.</span><span class="n">DYreel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span>
802                </div>
803<div class="viewcode-block" id="View.onResetView"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.View.onResetView">[docs]</a>    <span class="k">def</span> <span class="nf">onResetView</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
804        <span class="sd">&quot;&quot;&quot;</span>
805<span class="sd">        Reset x,y,dx and y in their full range  and in the initial scale</span>
806<span class="sd">        in case their previous range has changed</span>
807<span class="sd">        &quot;&quot;&quot;</span>
808        <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Xreel</span>
809        <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Yreel</span>
810        <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">DXreel</span>
811        <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">DYreel</span>
812        </div>
813<div class="viewcode-block" id="View.setTransformX"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.View.setTransformX">[docs]</a>    <span class="k">def</span> <span class="nf">setTransformX</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">funcx</span><span class="p">,</span> <span class="n">funcdx</span><span class="p">):</span>
814        <span class="sd">&quot;&quot;&quot;</span>
815<span class="sd">        Receive pointers to function that transform x and dx</span>
816<span class="sd">        and set corresponding View pointers</span>
817<span class="sd">        </span>
818<span class="sd">        :param transx: pointer to function that transforms x</span>
819<span class="sd">        :param transdx: pointer to function that transforms dx</span>
820<span class="sd">        &quot;&quot;&quot;</span>
821        <span class="bp">self</span><span class="o">.</span><span class="n">funcx</span> <span class="o">=</span> <span class="n">funcx</span>
822        <span class="bp">self</span><span class="o">.</span><span class="n">funcdx</span> <span class="o">=</span> <span class="n">funcdx</span>
823        </div>
824<div class="viewcode-block" id="View.setTransformY"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.View.setTransformY">[docs]</a>    <span class="k">def</span> <span class="nf">setTransformY</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">funcy</span><span class="p">,</span> <span class="n">funcdy</span><span class="p">):</span>
825        <span class="sd">&quot;&quot;&quot;</span>
826<span class="sd">        Receive pointers to function that transform y and dy</span>
827<span class="sd">        and set corresponding View pointers</span>
828<span class="sd">        </span>
829<span class="sd">        :param transx: pointer to function that transforms y</span>
830<span class="sd">        :param transdx: pointer to function that transforms dy</span>
831<span class="sd">        &quot;&quot;&quot;</span>
832        <span class="bp">self</span><span class="o">.</span><span class="n">funcy</span> <span class="o">=</span> <span class="n">funcy</span>
833        <span class="bp">self</span><span class="o">.</span><span class="n">funcdy</span> <span class="o">=</span> <span class="n">funcdy</span>
834   </div>
835<div class="viewcode-block" id="View.returnXview"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.View.returnXview">[docs]</a>    <span class="k">def</span> <span class="nf">returnXview</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
836        <span class="sd">&quot;&quot;&quot;</span>
837<span class="sd">        Return View  x,y,dx,dy</span>
838<span class="sd">        &quot;&quot;&quot;</span>
839        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span>
840    </div>
841<div class="viewcode-block" id="View.check_data_logX"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.View.check_data_logX">[docs]</a>    <span class="k">def</span> <span class="nf">check_data_logX</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
842        <span class="sd">&quot;&quot;&quot;</span>
843<span class="sd">        Remove negative value in x vector to avoid plotting negative</span>
844<span class="sd">        value of Log10</span>
845<span class="sd">        &quot;&quot;&quot;</span>
846        <span class="n">tempx</span> <span class="o">=</span> <span class="p">[]</span>
847        <span class="n">tempdx</span> <span class="o">=</span> <span class="p">[]</span>
848        <span class="n">tempy</span> <span class="o">=</span> <span class="p">[]</span>
849        <span class="n">tempdy</span> <span class="o">=</span> <span class="p">[]</span>
850        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
851            <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">))</span>
852        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
853            <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">))</span>
854        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">xLabel</span> <span class="o">==</span> <span class="s">&quot;log10(x)&quot;</span><span class="p">:</span>
855            <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)):</span>
856                <span class="k">try</span><span class="p">:</span>
857                    <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">):</span>
858                        <span class="n">tempx</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
859                        <span class="n">tempdx</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
860                        <span class="n">tempy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
861                        <span class="n">tempdy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dy</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
862                <span class="k">except</span><span class="p">:</span>
863                    <span class="k">print</span> <span class="s">&quot;check_data_logX: skipping point x </span><span class="si">%g</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
864                    <span class="k">print</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_value</span>
865                    <span class="k">pass</span> 
866            <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">tempx</span>
867            <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">tempy</span>
868            <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">tempdx</span>
869            <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">tempdy</span>
870        </div>
871<div class="viewcode-block" id="View.check_data_logY"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.View.check_data_logY">[docs]</a>    <span class="k">def</span> <span class="nf">check_data_logY</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
872        <span class="sd">&quot;&quot;&quot;</span>
873<span class="sd">        Remove negative value in y vector</span>
874<span class="sd">        to avoid plotting negative value of Log10</span>
875<span class="sd">        </span>
876<span class="sd">        &quot;&quot;&quot;</span>
877        <span class="n">tempx</span> <span class="o">=</span> <span class="p">[]</span>
878        <span class="n">tempdx</span> <span class="o">=</span> <span class="p">[]</span>
879        <span class="n">tempy</span> <span class="o">=</span> <span class="p">[]</span>
880        <span class="n">tempdy</span> <span class="o">=</span> <span class="p">[]</span>
881        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
882            <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">))</span>
883        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
884            <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">))</span>
885        <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">yLabel</span> <span class="o">==</span> <span class="s">&quot;log10(y)&quot;</span><span class="p">):</span>
886            <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)):</span>
887                <span class="k">try</span><span class="p">:</span>
888                    <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">):</span>
889                        <span class="n">tempx</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
890                        <span class="n">tempdx</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
891                        <span class="n">tempy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
892                        <span class="n">tempdy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dy</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
893                <span class="k">except</span><span class="p">:</span>
894                    <span class="k">print</span> <span class="s">&quot;check_data_logY: skipping point </span><span class="si">%g</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
895                    <span class="k">print</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_value</span>
896                    <span class="k">pass</span>
897            <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">tempx</span>
898            <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">tempy</span>
899            <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">tempdx</span>
900            <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">tempdy</span>
901            </div>
902<div class="viewcode-block" id="View.onFitRangeView"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.View.onFitRangeView">[docs]</a>    <span class="k">def</span> <span class="nf">onFitRangeView</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xmin</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">xmax</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
903        <span class="sd">&quot;&quot;&quot;</span>
904<span class="sd">        It limits View data range to plot from min to max</span>
905<span class="sd">        </span>
906<span class="sd">        :param xmin: the minimum value of x to plot.</span>
907<span class="sd">        :param xmax: the maximum value of x to plot</span>
908<span class="sd">        </span>
909<span class="sd">        &quot;&quot;&quot;</span>
910        <span class="n">tempx</span> <span class="o">=</span> <span class="p">[]</span>
911        <span class="n">tempdx</span> <span class="o">=</span> <span class="p">[]</span>
912        <span class="n">tempy</span> <span class="o">=</span> <span class="p">[]</span>
913        <span class="n">tempdy</span> <span class="o">=</span> <span class="p">[]</span>
914        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
915            <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">))</span>
916        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
917            <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">))</span>
918        <span class="k">if</span> <span class="p">(</span><span class="n">xmin</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">xmax</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">):</span>
919            <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)):</span>
920                <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="n">xmin</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&lt;=</span> <span class="n">xmax</span><span class="p">):</span>
921                    <span class="n">tempx</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
922                    <span class="n">tempdx</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
923                    <span class="n">tempy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
924                    <span class="n">tempdy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dy</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
925            <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">tempx</span>
926            <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">tempy</span>
927            <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">tempdx</span>
928            <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">tempdy</span>
929
930              </div></div>
931<div class="viewcode-block" id="Data2D"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data2D">[docs]</a><span class="k">class</span> <span class="nc">Data2D</span><span class="p">(</span><span class="n">Plottable</span><span class="p">):</span>
932    <span class="sd">&quot;&quot;&quot;</span>
933<span class="sd">    2D data class for image plotting</span>
934<span class="sd">    &quot;&quot;&quot;</span>
935    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">image</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">qx_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">qy_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
936                  <span class="n">err_image</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">xmin</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">xmax</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">ymin</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
937                  <span class="n">ymax</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">zmin</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">zmax</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
938        <span class="sd">&quot;&quot;&quot;</span>
939<span class="sd">        Draw image</span>
940<span class="sd">        &quot;&quot;&quot;</span>
941        <span class="n">Plottable</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
942        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;Data2D&quot;</span>
943        <span class="bp">self</span><span class="o">.</span><span class="n">label</span> <span class="o">=</span> <span class="bp">None</span>
944        <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">image</span>
945        <span class="bp">self</span><span class="o">.</span><span class="n">qx_data</span> <span class="o">=</span> <span class="n">qx_data</span>
946        <span class="bp">self</span><span class="o">.</span><span class="n">qy_data</span> <span class="o">=</span> <span class="n">qx_data</span>
947        <span class="bp">self</span><span class="o">.</span><span class="n">err_data</span> <span class="o">=</span> <span class="n">err_image</span>
948        <span class="bp">self</span><span class="o">.</span><span class="n">source</span> <span class="o">=</span> <span class="bp">None</span>
949        <span class="bp">self</span><span class="o">.</span><span class="n">detector</span> <span class="o">=</span> <span class="p">[]</span>
950   
951        <span class="c">## Units for Q-values</span>
952        <span class="bp">self</span><span class="o">.</span><span class="n">xy_unit</span> <span class="o">=</span> <span class="s">&#39;A^{-1}&#39;</span>
953        <span class="c">## Units for I(Q) values</span>
954        <span class="bp">self</span><span class="o">.</span><span class="n">z_unit</span> <span class="o">=</span> <span class="s">&#39;cm^{-1}&#39;</span>
955        <span class="bp">self</span><span class="o">.</span><span class="n">_zaxis</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
956        <span class="c"># x-axis unit and label</span>
957        <span class="bp">self</span><span class="o">.</span><span class="n">_xaxis</span> <span class="o">=</span> <span class="s">&#39;</span><span class="se">\\</span><span class="s">rm{Q_{x}}&#39;</span>
958        <span class="bp">self</span><span class="o">.</span><span class="n">_xunit</span> <span class="o">=</span> <span class="s">&#39;A^{-1}&#39;</span>
959        <span class="c"># y-axis unit and label</span>
960        <span class="bp">self</span><span class="o">.</span><span class="n">_yaxis</span> <span class="o">=</span> <span class="s">&#39;</span><span class="se">\\</span><span class="s">rm{Q_{y}}&#39;</span>
961        <span class="bp">self</span><span class="o">.</span><span class="n">_yunit</span> <span class="o">=</span> <span class="s">&#39;A^{-1}&#39;</span>
962       
963        <span class="c">### might remove that later</span>
964        <span class="c">## Vector of Q-values at the center of each bin in x</span>
965        <span class="bp">self</span><span class="o">.</span><span class="n">x_bins</span> <span class="o">=</span> <span class="p">[]</span>
966        <span class="c">## Vector of Q-values at the center of each bin in y</span>
967        <span class="bp">self</span><span class="o">.</span><span class="n">y_bins</span> <span class="o">=</span> <span class="p">[]</span>
968       
969        <span class="c">#x and y boundaries</span>
970        <span class="bp">self</span><span class="o">.</span><span class="n">xmin</span> <span class="o">=</span> <span class="n">xmin</span>
971        <span class="bp">self</span><span class="o">.</span><span class="n">xmax</span> <span class="o">=</span> <span class="n">xmax</span>
972        <span class="bp">self</span><span class="o">.</span><span class="n">ymin</span> <span class="o">=</span> <span class="n">ymin</span>
973        <span class="bp">self</span><span class="o">.</span><span class="n">ymax</span> <span class="o">=</span> <span class="n">ymax</span>
974       
975        <span class="bp">self</span><span class="o">.</span><span class="n">zmin</span> <span class="o">=</span> <span class="n">zmin</span>
976        <span class="bp">self</span><span class="o">.</span><span class="n">zmax</span> <span class="o">=</span> <span class="n">zmax</span>
977        <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="bp">None</span>
978       
979<div class="viewcode-block" id="Data2D.xaxis"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data2D.xaxis">[docs]</a>    <span class="k">def</span> <span class="nf">xaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">unit</span><span class="p">):</span>
980        <span class="sd">&quot;&quot;&quot;</span>
981<span class="sd">        set x-axis</span>
982<span class="sd">        </span>
983<span class="sd">        :param label: x-axis label</span>
984<span class="sd">        :param unit: x-axis unit</span>
985<span class="sd">        </span>
986<span class="sd">        &quot;&quot;&quot;</span>
987        <span class="bp">self</span><span class="o">.</span><span class="n">_xaxis</span> <span class="o">=</span> <span class="n">label</span>
988        <span class="bp">self</span><span class="o">.</span><span class="n">_xunit</span> <span class="o">=</span> <span class="n">unit</span>
989        </div>
990<div class="viewcode-block" id="Data2D.yaxis"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data2D.yaxis">[docs]</a>    <span class="k">def</span> <span class="nf">yaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">unit</span><span class="p">):</span>
991        <span class="sd">&quot;&quot;&quot;</span>
992<span class="sd">        set y-axis</span>
993<span class="sd">        </span>
994<span class="sd">        :param label: y-axis label</span>
995<span class="sd">        :param unit: y-axis unit</span>
996<span class="sd">        </span>
997<span class="sd">        &quot;&quot;&quot;</span>
998        <span class="bp">self</span><span class="o">.</span><span class="n">_yaxis</span> <span class="o">=</span> <span class="n">label</span>
999        <span class="bp">self</span><span class="o">.</span><span class="n">_yunit</span> <span class="o">=</span> <span class="n">unit</span>
1000        </div>
1001<div class="viewcode-block" id="Data2D.zaxis"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data2D.zaxis">[docs]</a>    <span class="k">def</span> <span class="nf">zaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">unit</span><span class="p">):</span>
1002        <span class="sd">&quot;&quot;&quot;</span>
1003<span class="sd">        set z-axis</span>
1004<span class="sd">        </span>
1005<span class="sd">        :param label: z-axis label</span>
1006<span class="sd">        :param unit: z-axis unit</span>
1007<span class="sd">        </span>
1008<span class="sd">        &quot;&quot;&quot;</span>
1009        <span class="bp">self</span><span class="o">.</span><span class="n">_zaxis</span> <span class="o">=</span> <span class="n">label</span>
1010        <span class="bp">self</span><span class="o">.</span><span class="n">_zunit</span> <span class="o">=</span> <span class="n">unit</span>
1011        </div>
1012<div class="viewcode-block" id="Data2D.setValues"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data2D.setValues">[docs]</a>    <span class="k">def</span> <span class="nf">setValues</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">datainfo</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
1013        <span class="sd">&quot;&quot;&quot;</span>
1014<span class="sd">        Use datainfo object to initialize data2D</span>
1015<span class="sd">        </span>
1016<span class="sd">        :param datainfo: object</span>
1017<span class="sd">        </span>
1018<span class="sd">        &quot;&quot;&quot;</span>
1019        <span class="bp">self</span><span class="o">.</span><span class="n">image</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">datainfo</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
1020        <span class="bp">self</span><span class="o">.</span><span class="n">qx_data</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">datainfo</span><span class="o">.</span><span class="n">qx_data</span><span class="p">)</span>
1021        <span class="bp">self</span><span class="o">.</span><span class="n">qy_data</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">datainfo</span><span class="o">.</span><span class="n">qy_data</span><span class="p">)</span>
1022        <span class="bp">self</span><span class="o">.</span><span class="n">err_image</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">datainfo</span><span class="o">.</span><span class="n">err_data</span><span class="p">)</span>
1023       
1024        <span class="bp">self</span><span class="o">.</span><span class="n">xy_unit</span> <span class="o">=</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">Q_unit</span>
1025        <span class="bp">self</span><span class="o">.</span><span class="n">z_unit</span> <span class="o">=</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">I_unit</span>
1026        <span class="bp">self</span><span class="o">.</span><span class="n">_zaxis</span> <span class="o">=</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">_zaxis</span>
1027       
1028        <span class="bp">self</span><span class="o">.</span><span class="n">xaxis</span><span class="p">(</span><span class="n">datainfo</span><span class="o">.</span><span class="n">_xunit</span><span class="p">,</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">_xaxis</span><span class="p">)</span>
1029        <span class="bp">self</span><span class="o">.</span><span class="n">yaxis</span><span class="p">(</span><span class="n">datainfo</span><span class="o">.</span><span class="n">_yunit</span><span class="p">,</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">_yaxis</span><span class="p">)</span>
1030        <span class="c">#x and y boundaries</span>
1031        <span class="bp">self</span><span class="o">.</span><span class="n">xmin</span> <span class="o">=</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">xmin</span>
1032        <span class="bp">self</span><span class="o">.</span><span class="n">xmax</span> <span class="o">=</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">xmax</span>
1033        <span class="bp">self</span><span class="o">.</span><span class="n">ymin</span> <span class="o">=</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">ymin</span>
1034        <span class="bp">self</span><span class="o">.</span><span class="n">ymax</span> <span class="o">=</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">ymax</span>
1035        <span class="c">## Vector of Q-values at the center of each bin in x</span>
1036        <span class="bp">self</span><span class="o">.</span><span class="n">x_bins</span> <span class="o">=</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">x_bins</span>
1037        <span class="c">## Vector of Q-values at the center of each bin in y</span>
1038        <span class="bp">self</span><span class="o">.</span><span class="n">y_bins</span> <span class="o">=</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">y_bins</span>
1039        </div>
1040<div class="viewcode-block" id="Data2D.set_zrange"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data2D.set_zrange">[docs]</a>    <span class="k">def</span> <span class="nf">set_zrange</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">zmin</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">zmax</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
1041        <span class="sd">&quot;&quot;&quot;</span>
1042<span class="sd">        &quot;&quot;&quot;</span>
1043        <span class="k">if</span> <span class="n">zmin</span> <span class="o">&lt;</span> <span class="n">zmax</span><span class="p">:</span>
1044            <span class="bp">self</span><span class="o">.</span><span class="n">zmin</span> <span class="o">=</span> <span class="n">zmin</span>
1045            <span class="bp">self</span><span class="o">.</span><span class="n">zmax</span> <span class="o">=</span> <span class="n">zmax</span>
1046        <span class="k">else</span><span class="p">:</span>
1047            <span class="k">raise</span> <span class="s">&quot;zmin is greater or equal to zmax &quot;</span>
1048        </div>
1049<div class="viewcode-block" id="Data2D.render"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data2D.render">[docs]</a>    <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plot</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
1050        <span class="sd">&quot;&quot;&quot;</span>
1051<span class="sd">        Renders the plottable on the graph</span>
1052<span class="sd">        </span>
1053<span class="sd">        &quot;&quot;&quot;</span>
1054        <span class="n">plot</span><span class="o">.</span><span class="n">image</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">qx_data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">qy_data</span><span class="p">,</span>
1055                   <span class="bp">self</span><span class="o">.</span><span class="n">xmin</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmax</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymin</span><span class="p">,</span>
1056                   <span class="bp">self</span><span class="o">.</span><span class="n">ymax</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">zmin</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">zmax</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
1057       </div>
1058<div class="viewcode-block" id="Data2D.changed"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data2D.changed">[docs]</a>    <span class="k">def</span> <span class="nf">changed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1059        <span class="sd">&quot;&quot;&quot;</span>
1060<span class="sd">        &quot;&quot;&quot;</span>
1061        <span class="k">return</span> <span class="bp">False</span>
1062    </div>
1063    <span class="nd">@classmethod</span>
1064<div class="viewcode-block" id="Data2D.labels"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data2D.labels">[docs]</a>    <span class="k">def</span> <span class="nf">labels</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">collection</span><span class="p">):</span>
1065        <span class="sd">&quot;&quot;&quot;Build a label mostly unique within a collection&quot;&quot;&quot;</span>
1066        <span class="nb">map</span> <span class="o">=</span> <span class="p">{}</span>
1067        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">collection</span><span class="p">:</span>
1068            <span class="c">#map[item] = label(item, collection)</span>
1069            <span class="c">#map[item] = r&quot;$\rm{%s}$&quot; % item.name</span>
1070            <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">label</span> <span class="o">==</span> <span class="s">&quot;Data2D&quot;</span><span class="p">:</span>
1071                <span class="n">item</span><span class="o">.</span><span class="n">label</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">name</span>
1072            <span class="nb">map</span><span class="p">[</span><span class="n">item</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">label</span>
1073        <span class="k">return</span> <span class="nb">map</span>
1074
1075</div></div>
1076<div class="viewcode-block" id="Data1D"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data1D">[docs]</a><span class="k">class</span> <span class="nc">Data1D</span><span class="p">(</span><span class="n">Plottable</span><span class="p">):</span>
1077    <span class="sd">&quot;&quot;&quot;</span>
1078<span class="sd">    Data plottable: scatter plot of x,y with errors in x and y.</span>
1079<span class="sd">    &quot;&quot;&quot;</span>
1080   
1081    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">dx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
1082        <span class="sd">&quot;&quot;&quot;</span>
1083<span class="sd">        Draw points specified by x[i],y[i] in the current color/symbol.</span>
1084<span class="sd">        Uncertainty in x is given by dx[i], or by (xlo[i],xhi[i]) if the</span>
1085<span class="sd">        uncertainty is asymmetric.  Similarly for y uncertainty.</span>
1086
1087<span class="sd">        The title appears on the legend.</span>
1088<span class="sd">        The label, if it is different, appears on the status bar.</span>
1089<span class="sd">        &quot;&quot;&quot;</span>
1090        <span class="n">Plottable</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
1091        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;data&quot;</span>
1092        <span class="bp">self</span><span class="o">.</span><span class="n">label</span> <span class="o">=</span> <span class="s">&quot;data&quot;</span>
1093        <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
1094        <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span>
1095        <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">dx</span>
1096        <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">dy</span>
1097        <span class="bp">self</span><span class="o">.</span><span class="n">source</span> <span class="o">=</span> <span class="bp">None</span>
1098        <span class="bp">self</span><span class="o">.</span><span class="n">detector</span> <span class="o">=</span> <span class="bp">None</span>
1099        <span class="bp">self</span><span class="o">.</span><span class="n">xaxis</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">)</span>
1100        <span class="bp">self</span><span class="o">.</span><span class="n">yaxis</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">)</span>
1101        <span class="bp">self</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">View</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span><span class="p">)</span>
1102        <span class="bp">self</span><span class="o">.</span><span class="n">symbol</span> <span class="o">=</span> <span class="mi">0</span>
1103        <span class="bp">self</span><span class="o">.</span><span class="n">custom_color</span> <span class="o">=</span> <span class="bp">None</span>
1104        <span class="bp">self</span><span class="o">.</span><span class="n">markersize</span> <span class="o">=</span> <span class="mi">5</span>
1105        <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="bp">None</span>
1106        <span class="bp">self</span><span class="o">.</span><span class="n">zorder</span> <span class="o">=</span> <span class="mi">1</span>
1107        <span class="bp">self</span><span class="o">.</span><span class="n">hide_error</span> <span class="o">=</span> <span class="bp">False</span>
1108     
1109<div class="viewcode-block" id="Data1D.render"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data1D.render">[docs]</a>    <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plot</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
1110        <span class="sd">&quot;&quot;&quot;</span>
1111<span class="sd">        Renders the plottable on the graph</span>
1112<span class="sd">        &quot;&quot;&quot;</span>
1113        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">interactive</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
1114            <span class="n">kw</span><span class="p">[</span><span class="s">&#39;symbol&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">symbol</span>
1115            <span class="n">kw</span><span class="p">[</span><span class="s">&#39;id&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span>
1116            <span class="n">kw</span><span class="p">[</span><span class="s">&#39;hide_error&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">hide_error</span>
1117            <span class="n">kw</span><span class="p">[</span><span class="s">&#39;markersize&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">markersize</span>
1118            <span class="n">plot</span><span class="o">.</span><span class="n">interactive_points</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">y</span><span class="p">,</span>
1119                                    <span class="n">dx</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">dy</span><span class="p">,</span>
1120              <span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">zorder</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">zorder</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
1121        <span class="k">else</span><span class="p">:</span>
1122            <span class="n">kw</span><span class="p">[</span><span class="s">&#39;id&#39;</span><span class="p">]</span> <span class="o">=</span>  <span class="bp">self</span><span class="o">.</span><span class="n">id</span>
1123            <span class="n">kw</span><span class="p">[</span><span class="s">&#39;hide_error&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">hide_error</span>
1124            <span class="n">kw</span><span class="p">[</span><span class="s">&#39;symbol&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">symbol</span>
1125            <span class="n">kw</span><span class="p">[</span><span class="s">&#39;color&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">custom_color</span>
1126            <span class="n">kw</span><span class="p">[</span><span class="s">&#39;markersize&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">markersize</span>
1127            <span class="n">plot</span><span class="o">.</span><span class="n">points</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="n">dx</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">dx</span><span class="p">,</span>
1128                <span class="n">dy</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">dy</span><span class="p">,</span> <span class="n">zorder</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">zorder</span><span class="p">,</span> 
1129                <span class="n">marker</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">symbollist</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">symbol</span><span class="p">],</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
1130       </div>
1131<div class="viewcode-block" id="Data1D.changed"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data1D.changed">[docs]</a>    <span class="k">def</span> <span class="nf">changed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1132        <span class="k">return</span> <span class="bp">False</span>
1133</div>
1134    <span class="nd">@classmethod</span>
1135<div class="viewcode-block" id="Data1D.labels"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Data1D.labels">[docs]</a>    <span class="k">def</span> <span class="nf">labels</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">collection</span><span class="p">):</span>
1136        <span class="sd">&quot;&quot;&quot;Build a label mostly unique within a collection&quot;&quot;&quot;</span>
1137        <span class="nb">map</span> <span class="o">=</span> <span class="p">{}</span>
1138        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">collection</span><span class="p">:</span>
1139            <span class="c">#map[item] = label(item, collection)</span>
1140            <span class="c">#map[item] = r&quot;$\rm{%s}$&quot; % item.name</span>
1141            <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">label</span> <span class="o">==</span> <span class="s">&quot;data&quot;</span><span class="p">:</span>
1142                <span class="n">item</span><span class="o">.</span><span class="n">label</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">name</span>
1143            <span class="nb">map</span><span class="p">[</span><span class="n">item</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">label</span>
1144        <span class="k">return</span> <span class="nb">map</span>
1145   
1146    </div></div>
1147<div class="viewcode-block" id="Theory1D"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Theory1D">[docs]</a><span class="k">class</span> <span class="nc">Theory1D</span><span class="p">(</span><span class="n">Plottable</span><span class="p">):</span>
1148    <span class="sd">&quot;&quot;&quot;</span>
1149<span class="sd">    Theory plottable: line plot of x,y with confidence interval y.</span>
1150<span class="sd">    </span>
1151<span class="sd">    &quot;&quot;&quot;</span>
1152    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
1153        <span class="sd">&quot;&quot;&quot;</span>
1154<span class="sd">        Draw lines specified in x[i],y[i] in the current color/symbol.</span>
1155<span class="sd">        Confidence intervals in x are given by dx[i] or by (xlo[i],xhi[i])</span>
1156<span class="sd">        if the limits are asymmetric.</span>
1157<span class="sd">        </span>
1158<span class="sd">        The title is the name that will show up on the legend.</span>
1159<span class="sd">        &quot;&quot;&quot;</span>
1160        <span class="n">Plottable</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
1161        <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Theory1D is no longer supported, please use Data1D and change&quot;</span>
1162        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot; symbol.</span><span class="se">\n</span><span class="s">&quot;</span>
1163        <span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">,</span> <span class="n">msg</span>
1164        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;theory&quot;</span>
1165        <span class="bp">self</span><span class="o">.</span><span class="n">label</span> <span class="o">=</span> <span class="s">&quot;theory&quot;</span>
1166        <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
1167        <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span>
1168        <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">dy</span>
1169        <span class="bp">self</span><span class="o">.</span><span class="n">xaxis</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">)</span>
1170        <span class="bp">self</span><span class="o">.</span><span class="n">yaxis</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">)</span>
1171        <span class="bp">self</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">View</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span><span class="p">)</span>
1172        <span class="bp">self</span><span class="o">.</span><span class="n">symbol</span> <span class="o">=</span> <span class="mi">0</span>
1173        <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="bp">None</span>
1174        <span class="bp">self</span><span class="o">.</span><span class="n">zorder</span> <span class="o">=</span> <span class="mi">10</span>
1175       
1176<div class="viewcode-block" id="Theory1D.render"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Theory1D.render">[docs]</a>    <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plot</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
1177        <span class="sd">&quot;&quot;&quot;</span>
1178<span class="sd">        &quot;&quot;&quot;</span>
1179        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">interactive</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
1180            <span class="n">kw</span><span class="p">[</span><span class="s">&#39;id&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span>
1181            <span class="n">plot</span><span class="o">.</span><span class="n">interactive_curve</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">y</span><span class="p">,</span>
1182                                   <span class="n">dy</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">dy</span><span class="p">,</span>
1183                                   <span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">zorder</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">zorder</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
1184        <span class="k">else</span><span class="p">:</span>
1185            <span class="n">kw</span><span class="p">[</span><span class="s">&#39;id&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span>
1186            <span class="n">plot</span><span class="o">.</span><span class="n">curve</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">dy</span><span class="p">,</span> 
1187                       <span class="n">zorder</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">zorder</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
1188            </div>
1189<div class="viewcode-block" id="Theory1D.changed"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Theory1D.changed">[docs]</a>    <span class="k">def</span> <span class="nf">changed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1190        <span class="k">return</span> <span class="bp">False</span>
1191    </div>
1192    <span class="nd">@classmethod</span>
1193<div class="viewcode-block" id="Theory1D.labels"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Theory1D.labels">[docs]</a>    <span class="k">def</span> <span class="nf">labels</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">collection</span><span class="p">):</span>
1194        <span class="sd">&quot;&quot;&quot;Build a label mostly unique within a collection&quot;&quot;&quot;</span>
1195        <span class="nb">map</span> <span class="o">=</span> <span class="p">{}</span>
1196        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">collection</span><span class="p">:</span>
1197            <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">label</span> <span class="o">==</span> <span class="s">&quot;theory&quot;</span><span class="p">:</span>
1198                <span class="n">item</span><span class="o">.</span><span class="n">label</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">name</span>
1199            <span class="nb">map</span><span class="p">[</span><span class="n">item</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">label</span>
1200        <span class="k">return</span> <span class="nb">map</span>
1201   
1202   </div></div>
1203<div class="viewcode-block" id="Fit1D"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Fit1D">[docs]</a><span class="k">class</span> <span class="nc">Fit1D</span><span class="p">(</span><span class="n">Plottable</span><span class="p">):</span>
1204    <span class="sd">&quot;&quot;&quot;</span>
1205<span class="sd">    Fit plottable: composed of a data line plus a theory line.  This</span>
1206<span class="sd">    is treated like a single object from the perspective of the graph,</span>
1207<span class="sd">    except that it will have two legend entries, one for the data and</span>
1208<span class="sd">    one for the theory.</span>
1209
1210<span class="sd">    The color of the data and theory will be shared.</span>
1211<span class="sd">    </span>
1212<span class="sd">    &quot;&quot;&quot;</span>
1213    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">theory</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
1214        <span class="sd">&quot;&quot;&quot;</span>
1215<span class="sd">        &quot;&quot;&quot;</span>
1216        <span class="n">Plottable</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
1217        <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">data</span>
1218        <span class="bp">self</span><span class="o">.</span><span class="n">theory</span> <span class="o">=</span> <span class="n">theory</span>
1219
1220<div class="viewcode-block" id="Fit1D.render"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Fit1D.render">[docs]</a>    <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plot</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
1221        <span class="sd">&quot;&quot;&quot;</span>
1222<span class="sd">        &quot;&quot;&quot;</span>
1223        <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">plot</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
1224        <span class="bp">self</span><span class="o">.</span><span class="n">theory</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">plot</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
1225</div>
1226<div class="viewcode-block" id="Fit1D.changed"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Fit1D.changed">[docs]</a>    <span class="k">def</span> <span class="nf">changed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1227        <span class="sd">&quot;&quot;&quot;</span>
1228<span class="sd">        &quot;&quot;&quot;</span>
1229        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">changed</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">theory</span><span class="o">.</span><span class="n">changed</span><span class="p">()</span>
1230
1231
1232<span class="c"># ---------------------------------------------------------------</span></div></div>
1233<div class="viewcode-block" id="Text"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Text">[docs]</a><span class="k">class</span> <span class="nc">Text</span><span class="p">(</span><span class="n">Plottable</span><span class="p">):</span>
1234    <span class="sd">&quot;&quot;&quot;</span>
1235<span class="sd">    &quot;&quot;&quot;</span>
1236    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">xpos</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">ypos</span><span class="o">=</span><span class="mf">0.9</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s">&#39;text&#39;</span><span class="p">):</span>
1237        <span class="sd">&quot;&quot;&quot;</span>
1238<span class="sd">        Draw the user-defined text in plotter</span>
1239<span class="sd">        We can specify the position of text</span>
1240<span class="sd">        &quot;&quot;&quot;</span>
1241        <span class="n">Plottable</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
1242        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
1243        <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span>
1244        <span class="bp">self</span><span class="o">.</span><span class="n">xpos</span> <span class="o">=</span> <span class="n">xpos</span>
1245        <span class="bp">self</span><span class="o">.</span><span class="n">ypos</span> <span class="o">=</span> <span class="n">ypos</span>
1246       
1247<div class="viewcode-block" id="Text.render"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Text.render">[docs]</a>    <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plot</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
1248        <span class="sd">&quot;&quot;&quot;</span>
1249<span class="sd">        &quot;&quot;&quot;</span>
1250        <span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">transforms</span>
1251
1252        <span class="n">xcoords</span> <span class="o">=</span> <span class="n">transforms</span><span class="o">.</span><span class="n">blended_transform_factory</span><span class="p">(</span><span class="n">plot</span><span class="o">.</span><span class="n">subplot</span><span class="o">.</span><span class="n">transAxes</span><span class="p">,</span>
1253                                                       <span class="n">plot</span><span class="o">.</span><span class="n">subplot</span><span class="o">.</span><span class="n">transAxes</span><span class="p">)</span>
1254        <span class="n">plot</span><span class="o">.</span><span class="n">subplot</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">xpos</span><span class="p">,</span>
1255                          <span class="bp">self</span><span class="o">.</span><span class="n">ypos</span><span class="p">,</span>
1256                          <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">,</span>
1257                          <span class="n">label</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
1258                          <span class="n">transform</span><span class="o">=</span><span class="n">xcoords</span><span class="p">,</span>
1259                          <span class="p">)</span>
1260            </div>
1261<div class="viewcode-block" id="Text.setText"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Text.setText">[docs]</a>    <span class="k">def</span> <span class="nf">setText</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
1262        <span class="sd">&quot;&quot;&quot;Set the text string.&quot;&quot;&quot;</span>
1263        <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span>
1264</div>
1265<div class="viewcode-block" id="Text.getText"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Text.getText">[docs]</a>    <span class="k">def</span> <span class="nf">getText</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
1266        <span class="sd">&quot;&quot;&quot;Get the text string.&quot;&quot;&quot;</span>
1267        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span>
1268</div>
1269<div class="viewcode-block" id="Text.set_x"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Text.set_x">[docs]</a>    <span class="k">def</span> <span class="nf">set_x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
1270        <span class="sd">&quot;&quot;&quot;</span>
1271<span class="sd">        Set the x position of the text</span>
1272<span class="sd">        ACCEPTS: float</span>
1273<span class="sd">        &quot;&quot;&quot;</span>
1274        <span class="bp">self</span><span class="o">.</span><span class="n">xpos</span> <span class="o">=</span> <span class="n">x</span>
1275</div>
1276<div class="viewcode-block" id="Text.set_y"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Text.set_y">[docs]</a>    <span class="k">def</span> <span class="nf">set_y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
1277        <span class="sd">&quot;&quot;&quot;</span>
1278<span class="sd">        Set the y position of the text</span>
1279<span class="sd">        ACCEPTS: float</span>
1280<span class="sd">        &quot;&quot;&quot;</span>
1281        <span class="bp">self</span><span class="o">.</span><span class="n">ypos</span> <span class="o">=</span> <span class="n">y</span>
1282     
1283
1284<span class="c"># ---------------------------------------------------------------</span></div></div>
1285<div class="viewcode-block" id="Chisq"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Chisq">[docs]</a><span class="k">class</span> <span class="nc">Chisq</span><span class="p">(</span><span class="n">Plottable</span><span class="p">):</span>
1286    <span class="sd">&quot;&quot;&quot;</span>
1287<span class="sd">    Chisq plottable plots the chisq</span>
1288<span class="sd">    &quot;&quot;&quot;</span>
1289    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">chisq</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
1290        <span class="sd">&quot;&quot;&quot;</span>
1291<span class="sd">        Draw the chisq in plotter</span>
1292<span class="sd">        We can specify the position of chisq</span>
1293<span class="sd">        &quot;&quot;&quot;</span>
1294        <span class="n">Plottable</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
1295        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;chisq&quot;</span>
1296        <span class="c">#super( Chisq, self).__init__(None, None, None, None)</span>
1297        <span class="bp">self</span><span class="o">.</span><span class="n">_chisq</span> <span class="o">=</span> <span class="n">chisq</span>
1298        <span class="bp">self</span><span class="o">.</span><span class="n">xpos</span> <span class="o">=</span> <span class="mf">0.5</span>
1299        <span class="bp">self</span><span class="o">.</span><span class="n">ypos</span> <span class="o">=</span> <span class="mf">0.9</span>
1300       
1301<div class="viewcode-block" id="Chisq.render"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Chisq.render">[docs]</a>    <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plot</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
1302        <span class="sd">&quot;&quot;&quot;</span>
1303<span class="sd">        &quot;&quot;&quot;</span>
1304        <span class="k">if</span>  <span class="bp">self</span><span class="o">.</span><span class="n">_chisq</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
1305            <span class="n">chisqTxt</span> <span class="o">=</span> <span class="s">r&#39;$\chi^2=$&#39;</span>
1306        <span class="k">else</span><span class="p">:</span>
1307            <span class="n">chisqTxt</span> <span class="o">=</span> <span class="s">r&#39;$\chi^2=</span><span class="si">%g</span><span class="s">$&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_chisq</span><span class="p">))</span>
1308
1309        <span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">transforms</span>
1310
1311        <span class="n">xcoords</span> <span class="o">=</span> <span class="n">transforms</span><span class="o">.</span><span class="n">blended_transform_factory</span><span class="p">(</span><span class="n">plot</span><span class="o">.</span><span class="n">subplot</span><span class="o">.</span><span class="n">transAxes</span><span class="p">,</span>
1312                                                     <span class="n">plot</span><span class="o">.</span><span class="n">subplot</span><span class="o">.</span><span class="n">transAxes</span><span class="p">)</span>
1313        <span class="n">plot</span><span class="o">.</span><span class="n">subplot</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">xpos</span><span class="p">,</span>
1314                          <span class="bp">self</span><span class="o">.</span><span class="n">ypos</span><span class="p">,</span>
1315                          <span class="n">chisqTxt</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">&#39;chisq&#39;</span><span class="p">,</span>
1316                          <span class="n">transform</span><span class="o">=</span><span class="n">xcoords</span><span class="p">,)</span>
1317            </div>
1318<div class="viewcode-block" id="Chisq.setChisq"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.Chisq.setChisq">[docs]</a>    <span class="k">def</span> <span class="nf">setChisq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">chisq</span><span class="p">):</span>
1319        <span class="sd">&quot;&quot;&quot;</span>
1320<span class="sd">        Set the chisq value.</span>
1321<span class="sd">        &quot;&quot;&quot;</span>
1322        <span class="bp">self</span><span class="o">.</span><span class="n">_chisq</span> <span class="o">=</span> <span class="n">chisq</span>
1323
1324
1325<span class="c">######################################################</span>
1326</div></div>
1327<div class="viewcode-block" id="sample_graph"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.sample_graph">[docs]</a><span class="k">def</span> <span class="nf">sample_graph</span><span class="p">():</span>
1328    <span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">nx</span>
1329   
1330    <span class="c"># Construct a simple graph</span>
1331    <span class="k">if</span> <span class="bp">False</span><span class="p">:</span>
1332        <span class="n">x</span> <span class="o">=</span> <span class="n">nx</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">],</span> <span class="s">&#39;d&#39;</span><span class="p">)</span>
1333        <span class="n">y</span> <span class="o">=</span> <span class="n">nx</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">],</span> <span class="s">&#39;d&#39;</span><span class="p">)</span>
1334        <span class="n">dy</span> <span class="o">=</span> <span class="n">nx</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">0.2</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">,</span> <span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">])</span>
1335    <span class="k">else</span><span class="p">:</span>
1336        <span class="n">x</span> <span class="o">=</span> <span class="n">nx</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span>
1337        <span class="n">y</span> <span class="o">=</span> <span class="n">nx</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">nx</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">x</span> <span class="o">*</span> <span class="mf">2.8</span><span class="p">)</span>
1338        <span class="n">dy</span> <span class="o">=</span> <span class="n">nx</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">100</span> <span class="o">*</span> <span class="n">nx</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">y</span><span class="p">))</span> <span class="o">/</span> <span class="mi">100</span>
1339    <span class="n">data</span> <span class="o">=</span> <span class="n">Data1D</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="n">dy</span><span class="p">)</span>
1340    <span class="n">data</span><span class="o">.</span><span class="n">xaxis</span><span class="p">(</span><span class="s">&#39;distance&#39;</span><span class="p">,</span> <span class="s">&#39;m&#39;</span><span class="p">)</span>
1341    <span class="n">data</span><span class="o">.</span><span class="n">yaxis</span><span class="p">(</span><span class="s">&#39;time&#39;</span><span class="p">,</span> <span class="s">&#39;s&#39;</span><span class="p">)</span>
1342    <span class="n">graph</span> <span class="o">=</span> <span class="n">Graph</span><span class="p">()</span>
1343    <span class="n">graph</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&#39;Walking Results&#39;</span><span class="p">)</span>
1344    <span class="n">graph</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
1345    <span class="n">graph</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Theory1D</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="n">dy</span><span class="p">))</span>
1346    <span class="k">return</span> <span class="n">graph</span>
1347
1348</div>
1349<div class="viewcode-block" id="demo_plotter"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.plottables.demo_plotter">[docs]</a><span class="k">def</span> <span class="nf">demo_plotter</span><span class="p">(</span><span class="n">graph</span><span class="p">):</span>
1350    <span class="kn">import</span> <span class="nn">wx</span>
1351    <span class="kn">from</span> <span class="nn">pylab_plottables</span> <span class="kn">import</span> <span class="n">Plotter</span>
1352    <span class="c">#from mplplotter import Plotter</span>
1353
1354    <span class="c"># Make a frame to show it</span>
1355    <span class="n">app</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">PySimpleApp</span><span class="p">()</span>
1356    <span class="n">frame</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&#39;Plottables&#39;</span><span class="p">)</span>
1357    <span class="n">plotter</span> <span class="o">=</span> <span class="n">Plotter</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span>
1358    <span class="n">frame</span><span class="o">.</span><span class="n">Show</span><span class="p">()</span>
1359
1360    <span class="c"># render the graph to the pylab plotter</span>
1361    <span class="n">graph</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">plotter</span><span class="p">)</span>
1362   
1363    <span class="k">class</span> <span class="nc">GraphUpdate</span><span class="p">:</span>
1364        <span class="n">callnum</span> <span class="o">=</span> <span class="mi">0</span>
1365       
1366        <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">graph</span><span class="p">,</span> <span class="n">plotter</span><span class="p">):</span>
1367            <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">plotter</span> <span class="o">=</span> <span class="n">graph</span><span class="p">,</span> <span class="n">plotter</span>
1368       
1369        <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1370            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">changed</span><span class="p">():</span>
1371                <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plotter</span><span class="p">)</span>
1372                <span class="k">return</span> <span class="bp">True</span>
1373            <span class="k">return</span> <span class="bp">False</span>
1374       
1375        <span class="k">def</span> <span class="nf">onIdle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
1376            <span class="bp">self</span><span class="o">.</span><span class="n">callnum</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callnum</span> <span class="o">+</span> <span class="mi">1</span>
1377            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__call__</span><span class="p">():</span> 
1378                <span class="k">pass</span>  <span class="c"># event.RequestMore()</span>
1379    <span class="n">update</span> <span class="o">=</span> <span class="n">GraphUpdate</span><span class="p">(</span><span class="n">graph</span><span class="p">,</span> <span class="n">plotter</span><span class="p">)</span>
1380    <span class="n">frame</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_IDLE</span><span class="p">,</span> <span class="n">update</span><span class="o">.</span><span class="n">onIdle</span><span class="p">)</span>
1381    <span class="n">app</span><span class="o">.</span><span class="n">MainLoop</span><span class="p">()</span></div>
1382</pre></div>
1383
1384          </div>
1385        </div>
1386      </div>
1387      <div class="sphinxsidebar">
1388        <div class="sphinxsidebarwrapper">
1389<div id="searchbox" style="display: none">
1390  <h3>Quick search</h3>
1391    <form class="search" action="../../../search.html" method="get">
1392      <input type="text" name="q" />
1393      <input type="submit" value="Go" />
1394      <input type="hidden" name="check_keywords" value="yes" />
1395      <input type="hidden" name="area" value="default" />
1396    </form>
1397    <p class="searchtip" style="font-size: 90%">
1398    Enter search terms or a module, class or function name.
1399    </p>
1400</div>
1401<script type="text/javascript">$('#searchbox').show(0);</script>
1402        </div>
1403      </div>
1404      <div class="clearer"></div>
1405    </div>
1406    <div class="related">
1407      <h3>Navigation</h3>
1408      <ul>
1409        <li class="right" style="margin-right: 10px">
1410          <a href="../../../genindex.html" title="General Index"
1411             >index</a></li>
1412        <li class="right" >
1413          <a href="../../../py-modindex.html" title="Python Module Index"
1414             >modules</a> |</li>
1415        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
1416          <li><a href="../../index.html" >Module code</a> &raquo;</li> 
1417      </ul>
1418    </div>
1419    <div class="footer">
1420        &copy; Copyright 2013, The SasView Project.
1421      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
1422    </div>
1423  </body>
1424</html>
Note: See TracBrowser for help on using the repository browser.