forked from matplotlib/matplotlib.github.com
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtripcolor.html
More file actions
286 lines (235 loc) · 24.6 KB
/
tripcolor.html
File metadata and controls
286 lines (235 loc) · 24.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>matplotlib.tri.tripcolor — Matplotlib 3.1.0 documentation</title>
<link rel="stylesheet" href="../../../_static/mpl.css"
type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css"
type="text/css" />
<link rel="stylesheet" href="../../../_static/graphviz.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/gallery.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/copybutton.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/language_data.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script>
<script type="text/javascript" src="../../../_static/copybutton.js"></script>
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="Search within Matplotlib 3.1.0 documentation"
href="../../../_static/opensearch.xml"/>
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../../genindex.html"
/>
<link rel="search" title="Search" href="../../../search.html"
/>
<link rel="top" title="Matplotlib 3.1.0 documentation" href="../../../index.html" />
<link rel="up" title="matplotlib" href="../../matplotlib.html" />
<link rel="canonical" href="https://matplotlib.org/3.1.0/_modules/matplotlib/tri/tripcolor.html" />
</head>
<body>
<div id="plotting-contest" style="padding: 6px; background-color: teal; color: white;">
<p style="margin: 0;">The 2019 SciPy John Hunter Excellence in Plotting Contest is accepting submissions!
<br />
<a href="https://docs.google.com/forms/d/e/1FAIpQLSe-_AnKvYSzeQWfNDRoXgW0vl7_8q6jj3QbLIac8eUcb9lSAA/viewform?usp=sf_link" style="font-weight: bold;">Apply by June 8th</a></p>
</div>
<div style="background-color: white; text-align: left; padding: 10px 10px 15px 15px; position: relative;">
<a href="../../../index.html">
<div style="float: left; position: absolute; width: 496px; bottom: 0; padding-bottom: 24px"><span style="float: right; color: #789; background: white">Version 3.1.0</span></div>
<img src="../../../_static/logo2.png" height="125px" border="0" alt="matplotlib"/></a>
<!-- The "Fork me on github" ribbon -->
<div id="forkongithub"><a href="https://github.com/matplotlib/matplotlib">Fork me on GitHub</a></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../../../index.html">home</a>| </li>
<li><a href="../../../gallery/index.html">examples</a>| </li>
<li><a href="../../../tutorials/index.html">tutorials</a>| </li>
<li><a href="../../../api/index.html">API</a>| </li>
<li><a href="../../../contents.html">contents</a> »</li>
<li><a href="../../index.html" >Module code</a> »</li>
<li><a href="../../matplotlib.html" accesskey="U">matplotlib</a> »</li>
</ul>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script><div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../../../contents.html">Documentation overview</a><ul>
<li><a href="../../index.html">Module code</a><ul>
<li><a href="../../matplotlib.html">matplotlib</a><ul>
</ul></li>
</ul></li>
</ul></li>
</ul>
</div>
</div>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1>Source code for matplotlib.tri.tripcolor</h1><div class="highlight"><pre>
<span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="k">import</span> <span class="n">cbook</span>
<span class="kn">from</span> <span class="nn">matplotlib.collections</span> <span class="k">import</span> <span class="n">PolyCollection</span><span class="p">,</span> <span class="n">TriMesh</span>
<span class="kn">from</span> <span class="nn">matplotlib.colors</span> <span class="k">import</span> <span class="n">Normalize</span>
<span class="kn">from</span> <span class="nn">matplotlib.tri.triangulation</span> <span class="k">import</span> <span class="n">Triangulation</span>
<span class="k">def</span> <span class="nf">tripcolor</span><span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">norm</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">vmax</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">shading</span><span class="o">=</span><span class="s1">'flat'</span><span class="p">,</span> <span class="n">facecolors</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">"""</span>
<span class="sd"> Create a pseudocolor plot of an unstructured triangular grid.</span>
<span class="sd"> The triangulation can be specified in one of two ways; either::</span>
<span class="sd"> tripcolor(triangulation, ...)</span>
<span class="sd"> where triangulation is a :class:`matplotlib.tri.Triangulation`</span>
<span class="sd"> object, or</span>
<span class="sd"> ::</span>
<span class="sd"> tripcolor(x, y, ...)</span>
<span class="sd"> tripcolor(x, y, triangles, ...)</span>
<span class="sd"> tripcolor(x, y, triangles=triangles, ...)</span>
<span class="sd"> tripcolor(x, y, mask=mask, ...)</span>
<span class="sd"> tripcolor(x, y, triangles, mask=mask, ...)</span>
<span class="sd"> in which case a Triangulation object will be created. See</span>
<span class="sd"> :class:`~matplotlib.tri.Triangulation` for a explanation of these</span>
<span class="sd"> possibilities.</span>
<span class="sd"> The next argument must be *C*, the array of color values, either</span>
<span class="sd"> one per point in the triangulation if color values are defined at</span>
<span class="sd"> points, or one per triangle in the triangulation if color values</span>
<span class="sd"> are defined at triangles. If there are the same number of points</span>
<span class="sd"> and triangles in the triangulation it is assumed that color</span>
<span class="sd"> values are defined at points; to force the use of color values at</span>
<span class="sd"> triangles use the kwarg ``facecolors=C`` instead of just ``C``.</span>
<span class="sd"> *shading* may be 'flat' (the default) or 'gouraud'. If *shading*</span>
<span class="sd"> is 'flat' and C values are defined at points, the color values</span>
<span class="sd"> used for each triangle are from the mean C of the triangle's</span>
<span class="sd"> three points. If *shading* is 'gouraud' then color values must be</span>
<span class="sd"> defined at points.</span>
<span class="sd"> The remaining kwargs are the same as for</span>
<span class="sd"> :meth:`~matplotlib.axes.Axes.pcolor`.</span>
<span class="sd"> """</span>
<span class="n">cbook</span><span class="o">.</span><span class="n">_check_in_list</span><span class="p">([</span><span class="s1">'flat'</span><span class="p">,</span> <span class="s1">'gouraud'</span><span class="p">],</span> <span class="n">shading</span><span class="o">=</span><span class="n">shading</span><span class="p">)</span>
<span class="n">tri</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="o">.</span><span class="n">get_from_args_and_kwargs</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="c1"># C is the colors array defined at either points or faces (i.e. triangles).</span>
<span class="c1"># If facecolors is None, C are defined at points.</span>
<span class="c1"># If facecolors is not None, C are defined at faces.</span>
<span class="k">if</span> <span class="n">facecolors</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">C</span> <span class="o">=</span> <span class="n">facecolors</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">C</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="c1"># If there are a different number of points and triangles in the</span>
<span class="c1"># triangulation, can omit facecolors kwarg as it is obvious from</span>
<span class="c1"># length of C whether it refers to points or faces.</span>
<span class="c1"># Do not do this for gouraud shading.</span>
<span class="k">if</span> <span class="p">(</span><span class="n">facecolors</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">C</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">tri</span><span class="o">.</span><span class="n">triangles</span><span class="p">)</span> <span class="ow">and</span>
<span class="nb">len</span><span class="p">(</span><span class="n">C</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tri</span><span class="o">.</span><span class="n">x</span><span class="p">)</span> <span class="ow">and</span> <span class="n">shading</span> <span class="o">!=</span> <span class="s1">'gouraud'</span><span class="p">):</span>
<span class="n">facecolors</span> <span class="o">=</span> <span class="n">C</span>
<span class="c1"># Check length of C is OK.</span>
<span class="k">if</span> <span class="p">((</span><span class="n">facecolors</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">C</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tri</span><span class="o">.</span><span class="n">x</span><span class="p">))</span> <span class="ow">or</span>
<span class="p">(</span><span class="n">facecolors</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">C</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tri</span><span class="o">.</span><span class="n">triangles</span><span class="p">))):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'Length of color values array must be the same '</span>
<span class="s1">'as either the number of triangulation points '</span>
<span class="s1">'or triangles'</span><span class="p">)</span>
<span class="c1"># Handling of linewidths, shading, edgecolors and antialiased as</span>
<span class="c1"># in Axes.pcolor</span>
<span class="n">linewidths</span> <span class="o">=</span> <span class="p">(</span><span class="mf">0.25</span><span class="p">,)</span>
<span class="k">if</span> <span class="s1">'linewidth'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'linewidths'</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s1">'linewidth'</span><span class="p">)</span>
<span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s1">'linewidths'</span><span class="p">,</span> <span class="n">linewidths</span><span class="p">)</span>
<span class="n">edgecolors</span> <span class="o">=</span> <span class="s1">'none'</span>
<span class="k">if</span> <span class="s1">'edgecolor'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'edgecolors'</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s1">'edgecolor'</span><span class="p">)</span>
<span class="n">ec</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s1">'edgecolors'</span><span class="p">,</span> <span class="n">edgecolors</span><span class="p">)</span>
<span class="k">if</span> <span class="s1">'antialiased'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'antialiaseds'</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s1">'antialiased'</span><span class="p">)</span>
<span class="k">if</span> <span class="s1">'antialiaseds'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">and</span> <span class="n">ec</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"none"</span><span class="p">:</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'antialiaseds'</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">if</span> <span class="n">shading</span> <span class="o">==</span> <span class="s1">'gouraud'</span><span class="p">:</span>
<span class="k">if</span> <span class="n">facecolors</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'Gouraud shading does not support the use '</span>
<span class="s1">'of facecolors kwarg'</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">C</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tri</span><span class="o">.</span><span class="n">x</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'For gouraud shading, the length of color '</span>
<span class="s1">'values array must be the same as the '</span>
<span class="s1">'number of triangulation points'</span><span class="p">)</span>
<span class="n">collection</span> <span class="o">=</span> <span class="n">TriMesh</span><span class="p">(</span><span class="n">tri</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># Vertices of triangles.</span>
<span class="n">maskedTris</span> <span class="o">=</span> <span class="n">tri</span><span class="o">.</span><span class="n">get_masked_triangles</span><span class="p">()</span>
<span class="n">verts</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">stack</span><span class="p">((</span><span class="n">tri</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">maskedTris</span><span class="p">],</span> <span class="n">tri</span><span class="o">.</span><span class="n">y</span><span class="p">[</span><span class="n">maskedTris</span><span class="p">]),</span> <span class="n">axis</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span>
<span class="c1"># Color values.</span>
<span class="k">if</span> <span class="n">facecolors</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="c1"># One color per triangle, the mean of the 3 vertex color values.</span>
<span class="n">C</span> <span class="o">=</span> <span class="n">C</span><span class="p">[</span><span class="n">maskedTris</span><span class="p">]</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">tri</span><span class="o">.</span><span class="n">mask</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="c1"># Remove color values of masked triangles.</span>
<span class="n">C</span> <span class="o">=</span> <span class="n">C</span><span class="p">[</span><span class="o">~</span><span class="n">tri</span><span class="o">.</span><span class="n">mask</span><span class="p">]</span>
<span class="n">collection</span> <span class="o">=</span> <span class="n">PolyCollection</span><span class="p">(</span><span class="n">verts</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">collection</span><span class="o">.</span><span class="n">set_alpha</span><span class="p">(</span><span class="n">alpha</span><span class="p">)</span>
<span class="n">collection</span><span class="o">.</span><span class="n">set_array</span><span class="p">(</span><span class="n">C</span><span class="p">)</span>
<span class="k">if</span> <span class="n">norm</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">norm</span><span class="p">,</span> <span class="n">Normalize</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"'norm' must be an instance of 'Normalize'"</span><span class="p">)</span>
<span class="n">collection</span><span class="o">.</span><span class="n">set_cmap</span><span class="p">(</span><span class="n">cmap</span><span class="p">)</span>
<span class="n">collection</span><span class="o">.</span><span class="n">set_norm</span><span class="p">(</span><span class="n">norm</span><span class="p">)</span>
<span class="k">if</span> <span class="n">vmin</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">vmax</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">collection</span><span class="o">.</span><span class="n">set_clim</span><span class="p">(</span><span class="n">vmin</span><span class="p">,</span> <span class="n">vmax</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">collection</span><span class="o">.</span><span class="n">autoscale_None</span><span class="p">()</span>
<span class="n">ax</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
<span class="n">minx</span> <span class="o">=</span> <span class="n">tri</span><span class="o">.</span><span class="n">x</span><span class="o">.</span><span class="n">min</span><span class="p">()</span>
<span class="n">maxx</span> <span class="o">=</span> <span class="n">tri</span><span class="o">.</span><span class="n">x</span><span class="o">.</span><span class="n">max</span><span class="p">()</span>
<span class="n">miny</span> <span class="o">=</span> <span class="n">tri</span><span class="o">.</span><span class="n">y</span><span class="o">.</span><span class="n">min</span><span class="p">()</span>
<span class="n">maxy</span> <span class="o">=</span> <span class="n">tri</span><span class="o">.</span><span class="n">y</span><span class="o">.</span><span class="n">max</span><span class="p">()</span>
<span class="n">corners</span> <span class="o">=</span> <span class="p">(</span><span class="n">minx</span><span class="p">,</span> <span class="n">miny</span><span class="p">),</span> <span class="p">(</span><span class="n">maxx</span><span class="p">,</span> <span class="n">maxy</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">update_datalim</span><span class="p">(</span><span class="n">corners</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">autoscale_view</span><span class="p">()</span>
<span class="n">ax</span><span class="o">.</span><span class="n">add_collection</span><span class="p">(</span><span class="n">collection</span><span class="p">)</span>
<span class="k">return</span> <span class="n">collection</span>
</pre></div>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
© Copyright 2002 - 2012 John Hunter, Darren Dale, Eric Firing, Michael Droettboom and the Matplotlib development team; 2012 - 2018 The Matplotlib development team.
<br />
Last updated on May 18, 2019.
Created using
<a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
Doc version v3.1.0-4-g0078324e4.
</div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-55954603-1', 'auto');
ga('send', 'pageview');
</script>
</body>
<footer>
</footer>
</html>