<divid="unreleased-message"> You are reading an old version of the documentation (v3.2.0). For the latest version see <ahref="https://matplotlib.org/stable/gallery/units/evans_test.html">https://matplotlib.org/stable/gallery/units/evans_test.html</a></div>
<pclass="last">Click <aclass="reference internal" href="#sphx-glr-download-gallery-units-evans-test-py"><spanclass="std std-ref">here</span></a> to download the full example code</p>
<spanid="sphx-glr-gallery-units-evans-test-py"></span><h1>Evans test<aclass="headerlink" href="#evans-test" title="Permalink to this headline">¶</a></h1>
<p>A mockup "Foo" units class which supports conversion and different tick
formatting depending on the "unit". Here the "unit" is just a scalar
conversion factor, but this example shows that Matplotlib is entirely agnostic
<spanclass="k">class</span><spanclass="nc">FooConverter</span><spanclass="p">(</span><ahref="../../api/units_api.html#matplotlib.units.ConversionInterface" title="View documentation for matplotlib.units.ConversionInterface"><spanclass="n">units</span><spanclass="o">.</span><spanclass="n">ConversionInterface</span></a><spanclass="p">):</span>
<spanclass="k">return</span><ahref="../../api/units_api.html#matplotlib.units.AxisInfo" title="View documentation for matplotlib.units.AxisInfo"><spanclass="n">units</span><spanclass="o">.</span><spanclass="n">AxisInfo</span></a><spanclass="p">(</span>
<spanclass="n">majloc</span><spanclass="o">=</span><ahref="../../api/ticker_api.html#matplotlib.ticker.IndexLocator" title="View documentation for matplotlib.ticker.IndexLocator"><spanclass="n">ticker</span><spanclass="o">.</span><spanclass="n">IndexLocator</span></a><spanclass="p">(</span><spanclass="mi">8</span><spanclass="p">,</span><spanclass="mi">0</span><spanclass="p">),</span>
<spanclass="n">majfmt</span><spanclass="o">=</span><ahref="../../api/ticker_api.html#matplotlib.ticker.FormatStrFormatter" title="View documentation for matplotlib.ticker.FormatStrFormatter"><spanclass="n">ticker</span><spanclass="o">.</span><spanclass="n">FormatStrFormatter</span></a><spanclass="p">(</span><spanclass="s2">"VAL: </span><spanclass="si">%s</span><spanclass="s2">"</span><spanclass="p">),</span>
<spanclass="sd"> Convert *obj* using *unit*.</span>
<spanclass="sd"> If *obj* is a sequence, return the converted sequence.</span>
<spanclass="sd"> """</span>
<spanclass="k">if</span><ahref="../../api/units_api.html#matplotlib.units.ConversionInterface.is_numlike" title="View documentation for matplotlib.units.ConversionInterface.is_numlike"><spanclass="n">units</span><spanclass="o">.</span><spanclass="n">ConversionInterface</span><spanclass="o">.</span><spanclass="n">is_numlike</span></a><spanclass="p">(</span><spanclass="n">obj</span><spanclass="p">):</span>
<spanclass="k">def</span><spanclass="nf">default_units</span><spanclass="p">(</span><ahref="https://docs.python.org/3/library/stdtypes.html#list" title="View documentation for builtins.list"><spanclass="n">x</span></a><spanclass="p">,</span><spanclass="n">axis</span><spanclass="p">):</span>
<spanclass="sd">"""Return the default unit for *x* or None."""</span>
<spanclass="k">if</span><spanclass="n">np</span><spanclass="o">.</span><spanclass="n">iterable</span><spanclass="p">(</span><ahref="https://docs.python.org/3/library/stdtypes.html#list" title="View documentation for builtins.list"><spanclass="n">x</span></a><spanclass="p">):</span>
<spanclass="k">for</span><spanclass="n">thisx</span><spanclass="ow">in</span><ahref="https://docs.python.org/3/library/stdtypes.html#list" title="View documentation for builtins.list"><spanclass="n">x</span></a><spanclass="p">:</span>
<spanclass="k">return</span><ahref="https://docs.python.org/3/library/stdtypes.html#list" title="View documentation for builtins.list"><spanclass="n">x</span></a><spanclass="o">.</span><spanclass="n">unit</span>
<spanclass="n">units</span><spanclass="o">.</span><spanclass="n">registry</span><spanclass="p">[</span><ahref="https://docs.python.org/3/library/functions.html#type" title="View documentation for builtins.type"><spanclass="n">Foo</span></a><spanclass="p">]</span><spanclass="o">=</span><ahref="https://docs.python.org/3/library/functions.html#type" title="View documentation for builtins.type"><spanclass="n">FooConverter</span></a><spanclass="p">()</span>
<spanclass="c1"># create some Foos</span>
<ahref="https://docs.python.org/3/library/stdtypes.html#list" title="View documentation for builtins.list"><spanclass="n">x</span></a><spanclass="o">=</span><spanclass="p">[</span><ahref="https://docs.python.org/3/library/functions.html#type" title="View documentation for builtins.type"><spanclass="n">Foo</span></a><spanclass="p">(</span><spanclass="n">val</span><spanclass="p">,</span><spanclass="mf">1.0</span><spanclass="p">)</span><spanclass="k">for</span><spanclass="n">val</span><spanclass="ow">in</span><spanclass="nb">range</span><spanclass="p">(</span><spanclass="mi">0</span><spanclass="p">,</span><spanclass="mi">50</span><spanclass="p">,</span><spanclass="mi">2</span><spanclass="p">)]</span>
<spanclass="c1"># and some arbitrary y data</span>
<ahref="https://docs.python.org/3/library/stdtypes.html#list" title="View documentation for builtins.list"><spanclass="n">y</span></a><spanclass="o">=</span><spanclass="p">[</span><spanclass="n">i</span><spanclass="k">for</span><spanclass="n">i</span><spanclass="ow">in</span><spanclass="nb">range</span><spanclass="p">(</span><spanclass="nb">len</span><spanclass="p">(</span><ahref="https://docs.python.org/3/library/stdtypes.html#list" title="View documentation for builtins.list"><spanclass="n">x</span></a><spanclass="p">))]</span>
<ahref="../../api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure" title="View documentation for matplotlib.figure.Figure"><spanclass="n">fig</span></a><spanclass="p">,</span><spanclass="p">(</span><ahref="../../api/_as_gen/matplotlib.axes.SubplotBase.html#matplotlib.axes.SubplotBase" title="View documentation for matplotlib.axes.SubplotBase"><spanclass="n">ax1</span></a><spanclass="p">,</span><ahref="../../api/_as_gen/matplotlib.axes.SubplotBase.html#matplotlib.axes.SubplotBase" title="View documentation for matplotlib.axes.SubplotBase"><spanclass="n">ax2</span></a><spanclass="p">)</span><spanclass="o">=</span><ahref="../../api/_as_gen/matplotlib.pyplot.subplots.html#matplotlib.pyplot.subplots" title="View documentation for matplotlib.pyplot.subplots"><spanclass="n">plt</span><spanclass="o">.</span><spanclass="n">subplots</span></a><spanclass="p">(</span><spanclass="mi">1</span><spanclass="p">,</span><spanclass="mi">2</span><spanclass="p">)</span>
<ahref="../../api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure" title="View documentation for matplotlib.figure.Figure"><spanclass="n">fig</span></a><spanclass="o">.</span><spanclass="n">suptitle</span><spanclass="p">(</span><spanclass="s2">"Custom units"</span><spanclass="p">)</span>
<ahref="../../api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure" title="View documentation for matplotlib.figure.Figure"><spanclass="n">fig</span></a><spanclass="o">.</span><spanclass="n">subplots_adjust</span><spanclass="p">(</span><spanclass="n">bottom</span><spanclass="o">=</span><spanclass="mf">0.2</span><spanclass="p">)</span>
<spanclass="c1"># plot specifying units</span>
<ahref="../../api/_as_gen/matplotlib.axes.SubplotBase.html#matplotlib.axes.SubplotBase" title="View documentation for matplotlib.axes.SubplotBase"><spanclass="n">ax2</span></a><spanclass="o">.</span><spanclass="n">plot</span><spanclass="p">(</span><ahref="https://docs.python.org/3/library/stdtypes.html#list" title="View documentation for builtins.list"><spanclass="n">x</span></a><spanclass="p">,</span><ahref="https://docs.python.org/3/library/stdtypes.html#list" title="View documentation for builtins.list"><spanclass="n">y</span></a><spanclass="p">,</span><spanclass="s1">'o'</span><spanclass="p">,</span><spanclass="n">xunits</span><spanclass="o">=</span><spanclass="mf">2.0</span><spanclass="p">)</span>
<ahref="../../api/_as_gen/matplotlib.axes.SubplotBase.html#matplotlib.axes.SubplotBase" title="View documentation for matplotlib.axes.SubplotBase"><spanclass="n">ax2</span></a><spanclass="o">.</span><spanclass="n">set_title</span><spanclass="p">(</span><spanclass="s2">"xunits = 2.0"</span><spanclass="p">)</span>
<ahref="../../api/_as_gen/matplotlib.pyplot.setp.html#matplotlib.pyplot.setp" title="View documentation for matplotlib.pyplot.setp"><spanclass="n">plt</span><spanclass="o">.</span><spanclass="n">setp</span></a><spanclass="p">(</span><ahref="../../api/_as_gen/matplotlib.axes.SubplotBase.html#matplotlib.axes.SubplotBase" title="View documentation for matplotlib.axes.SubplotBase"><spanclass="n">ax2</span></a><spanclass="o">.</span><spanclass="n">get_xticklabels</span><spanclass="p">(),</span><spanclass="n">rotation</span><spanclass="o">=</span><spanclass="mi">30</span><spanclass="p">,</span><spanclass="n">ha</span><spanclass="o">=</span><spanclass="s1">'right'</span><spanclass="p">)</span>
<spanclass="c1"># plot without specifying units; will use the None branch for axisinfo</span>
<ahref="../../api/_as_gen/matplotlib.axes.SubplotBase.html#matplotlib.axes.SubplotBase" title="View documentation for matplotlib.axes.SubplotBase"><spanclass="n">ax1</span></a><spanclass="o">.</span><spanclass="n">plot</span><spanclass="p">(</span><ahref="https://docs.python.org/3/library/stdtypes.html#list" title="View documentation for builtins.list"><spanclass="n">x</span></a><spanclass="p">,</span><ahref="https://docs.python.org/3/library/stdtypes.html#list" title="View documentation for builtins.list"><spanclass="n">y</span></a><spanclass="p">)</span><spanclass="c1"># uses default units</span>
<ahref="../../api/_as_gen/matplotlib.axes.SubplotBase.html#matplotlib.axes.SubplotBase" title="View documentation for matplotlib.axes.SubplotBase"><spanclass="n">ax1</span></a><spanclass="o">.</span><spanclass="n">set_title</span><spanclass="p">(</span><spanclass="s1">'default units'</span><spanclass="p">)</span>
<ahref="../../api/_as_gen/matplotlib.pyplot.setp.html#matplotlib.pyplot.setp" title="View documentation for matplotlib.pyplot.setp"><spanclass="n">plt</span><spanclass="o">.</span><spanclass="n">setp</span></a><spanclass="p">(</span><ahref="../../api/_as_gen/matplotlib.axes.SubplotBase.html#matplotlib.axes.SubplotBase" title="View documentation for matplotlib.axes.SubplotBase"><spanclass="n">ax1</span></a><spanclass="o">.</span><spanclass="n">get_xticklabels</span><spanclass="p">(),</span><spanclass="n">rotation</span><spanclass="o">=</span><spanclass="mi">30</span><spanclass="p">,</span><spanclass="n">ha</span><spanclass="o">=</span><spanclass="s1">'right'</span><spanclass="p">)</span>
<ahref="../../api/_as_gen/matplotlib.pyplot.show.html#matplotlib.pyplot.show" title="View documentation for matplotlib.pyplot.show"><spanclass="n">plt</span><spanclass="o">.</span><spanclass="n">show</span></a><spanclass="p">()</span>
</pre></div>
</div>
<divclass="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-gallery-units-evans-test-py">