mirror of
https://github.com/Unidata/python-awips.git
synced 2025-02-23 22:57:56 -05:00
364 lines
No EOL
35 KiB
HTML
364 lines
No EOL
35 KiB
HTML
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" >
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Grids and Cartopy — python-awips documentation</title>
|
||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||
<!--[if lt IE 9]>
|
||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||
<![endif]-->
|
||
|
||
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
|
||
<script src="../../_static/jquery.js"></script>
|
||
<script src="../../_static/underscore.js"></script>
|
||
<script src="../../_static/doctools.js"></script>
|
||
<script src="../../_static/js/theme.js"></script>
|
||
<link rel="author" title="About these documents" href="../../about.html" />
|
||
<link rel="index" title="Index" href="../../genindex.html" />
|
||
<link rel="search" title="Search" href="../../search.html" />
|
||
<link rel="next" title="METAR Station Plot with MetPy" href="METAR_Station_Plot_with_MetPy.html" />
|
||
<link rel="prev" title="Grid Levels and Parameters" href="Grid_Levels_and_Parameters.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
<a href="../../index.html" class="icon icon-home"> python-awips
|
||
</a>
|
||
<div class="version">
|
||
18.1.7
|
||
</div>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="../../api/index.html">API Documentation</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../datatypes.html">Available Data Types</a></li>
|
||
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current">
|
||
<li class="toctree-l2"><a class="reference internal" href="Colored_Surface_Temperature_Plot.html">Colored Surface Temperature Plot</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Forecast_Model_Vertical_Sounding.html">Forecast Model Vertical Sounding</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="GOES_CIRA_Product_Writer.html">GOES CIRA Product Writer</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Grid_Levels_and_Parameters.html">Grid Levels and Parameters</a></li>
|
||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Grids and Cartopy</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#objectives">Objectives</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="#table-of-contents">Table of Contents</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#imports">1 Imports</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#define-data-request">2 Define Data Request</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#limit-results-based-on-time">3 Limit Results Based on Time</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#function-make-map">4 Function: make_map()</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#use-the-grid-data">5 Use the Grid Data!</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#see-also">6 See Also</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="METAR_Station_Plot_with_MetPy.html">METAR Station Plot with MetPy</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Map_Resources_and_Topography.html">Map Resources and Topography</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Model_Sounding_Data.html">Model Sounding Data</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="NEXRAD_Level3_Radar.html">NEXRAD Level3 Radar</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Precip_Accumulation-Region_Of_Interest.html">Precip Accumulation-Region Of Interest</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Regional_Surface_Obs_Plot.html">Regional Surface Obs Plot</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Satellite_Imagery.html">Satellite Imagery</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Upper_Air_BUFR_Soundings.html">Upper Air BUFR Soundings</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Watch_and_Warning_Polygons.html">Watch and Warning Polygons</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../dev.html">Development Guide</a></li>
|
||
<li class="toctree-l1"><a class="reference external" href="http://unidata.github.io/awips2/appendix/appendix-grid-parameters/">AWIPS Grid Parameters</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../about.html">About Unidata AWIPS</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="../../index.html">python-awips</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||
<li><a href="../index.html">Data Plotting Examples</a> »</li>
|
||
<li>Grids and Cartopy</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
<a href="../../_sources/examples/generated/Grids_and_Cartopy.rst.txt" rel="nofollow"> View page source</a>
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<section id="grids-and-cartopy">
|
||
<h1>Grids and Cartopy<a class="headerlink" href="#grids-and-cartopy" title="Permalink to this headline"></a></h1>
|
||
<p><a class="reference external" href="http://nbviewer.ipython.org/github/Unidata/python-awips/blob/master/examples/notebooks/Grids_and_Cartopy.ipynb">Notebook</a>
|
||
Python-AWIPS Tutorial Notebook</p>
|
||
<hr class="docutils" />
|
||
<section id="objectives">
|
||
<h2>Objectives<a class="headerlink" href="#objectives" title="Permalink to this headline"></a></h2>
|
||
<ul class="simple">
|
||
<li><p>Create a colorized plot for the continental US of model data (grib).</p></li>
|
||
<li><p>Access the model data from an EDEX server and limit the data returned
|
||
by using model specific parameters.</p></li>
|
||
<li><p>Use both <em>pcolormesh</em> and <em>contourf</em> to create colorized plots, and
|
||
compare the differences between the two.</p></li>
|
||
</ul>
|
||
<hr class="docutils" />
|
||
<section id="table-of-contents">
|
||
<h3>Table of Contents<a class="headerlink" href="#table-of-contents" title="Permalink to this headline"></a></h3>
|
||
<div class="line-block">
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html#imports">1
|
||
Imports</a></div>
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html#define-data-request">2 Define Data
|
||
Request</a></div>
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html#limit-results-based-on-time">3 Limit Results Based on
|
||
Time</a></div>
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html#function-make-map">4 Function:
|
||
make_map()</a></div>
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html#use-the-grid-data">5 Use the Grid
|
||
Data!</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html#plot-using-pcolormesh">5.1 Plot Using
|
||
pcolormesh</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html#plot-using-contourf">5.2 Plot Using
|
||
contourf</a></div>
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html#see-also">6 See
|
||
Also</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html#related-notebooks">6.1 Related
|
||
Notebooks</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html#additional-documentation">6.2 Additional
|
||
Documentation</a></div>
|
||
</div>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="imports">
|
||
<h3>1 Imports<a class="headerlink" href="#imports" title="Permalink to this headline"></a></h3>
|
||
<p>Start by importing both the python-awips specific library, as well as
|
||
the libraries needed for plotting and manipulating the data</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">awips.dataaccess</span> <span class="kn">import</span> <span class="n">DataAccessLayer</span>
|
||
<span class="kn">import</span> <span class="nn">cartopy.crs</span> <span class="k">as</span> <span class="nn">ccrs</span>
|
||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||
<span class="kn">from</span> <span class="nn">cartopy.mpl.gridliner</span> <span class="kn">import</span> <span class="n">LONGITUDE_FORMATTER</span><span class="p">,</span> <span class="n">LATITUDE_FORMATTER</span>
|
||
<span class="kn">from</span> <span class="nn">scipy.constants</span> <span class="kn">import</span> <span class="n">convert_temperature</span>
|
||
</pre></div>
|
||
</div>
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html">Top</a></p>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="define-data-request">
|
||
<h3>2 Define Data Request<a class="headerlink" href="#define-data-request" title="Permalink to this headline"></a></h3>
|
||
<p>If you read through the <a class="reference external" href="https://nbviewer.jupyter.org/github/Unidata/pyaos-ams-2021/blob/master/notebooks/dataAccess/python-awips-HowToAccessData.ipynb">python-awips: How to Access
|
||
Data</a>
|
||
training, you will know that we need to set an EDEX url to access our
|
||
server, and then we create a data request. In this example we use <em>grid</em>
|
||
as the data type to define our request. In addition to setting the data
|
||
type, the location, parameters and levels are also set as <strong>RAP13</strong>,
|
||
<strong>T</strong> (for temperature), and <strong>2.0FHAG</strong> (for Fixed Height Above Ground
|
||
in meters), respectively.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">changeEDEXHost</span><span class="p">(</span><span class="s2">"edex-cloud.unidata.ucar.edu"</span><span class="p">)</span>
|
||
<span class="n">request</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">newDataRequest</span><span class="p">()</span>
|
||
<span class="n">request</span><span class="o">.</span><span class="n">setDatatype</span><span class="p">(</span><span class="s2">"grid"</span><span class="p">)</span>
|
||
<span class="n">request</span><span class="o">.</span><span class="n">setLocationNames</span><span class="p">(</span><span class="s2">"RAP13"</span><span class="p">)</span>
|
||
<span class="n">request</span><span class="o">.</span><span class="n">setParameters</span><span class="p">(</span><span class="s2">"T"</span><span class="p">)</span>
|
||
<span class="n">request</span><span class="o">.</span><span class="n">setLevels</span><span class="p">(</span><span class="s2">"2.0FHAG"</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Take a look at our request</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">DefaultDataRequest</span><span class="p">(</span><span class="n">datatype</span><span class="o">=</span><span class="n">grid</span><span class="p">,</span> <span class="n">identifiers</span><span class="o">=</span><span class="p">{},</span> <span class="n">parameters</span><span class="o">=</span><span class="p">[</span><span class="s1">'T'</span><span class="p">],</span> <span class="n">levels</span><span class="o">=</span><span class="p">[</span><span class="o"><</span><span class="n">dynamicserialize</span><span class="o">.</span><span class="n">dstypes</span><span class="o">.</span><span class="n">com</span><span class="o">.</span><span class="n">raytheon</span><span class="o">.</span><span class="n">uf</span><span class="o">.</span><span class="n">common</span><span class="o">.</span><span class="n">dataplugin</span><span class="o">.</span><span class="n">level</span><span class="o">.</span><span class="n">Level</span><span class="o">.</span><span class="n">Level</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x11127bfd0</span><span class="o">></span><span class="p">],</span> <span class="n">locationNames</span><span class="o">=</span><span class="p">[</span><span class="s1">'RAP13'</span><span class="p">],</span> <span class="n">envelope</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html">Top</a></p>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="limit-results-based-on-time">
|
||
<h3>3 Limit Results Based on Time<a class="headerlink" href="#limit-results-based-on-time" title="Permalink to this headline"></a></h3>
|
||
<p>Models produce many different time variants during their runs, so let’s
|
||
limit the data to the most recent time and forecast run.</p>
|
||
<blockquote>
|
||
<div><p><strong>Note</strong>: You can play around with different times and forecast runs
|
||
to see the differences.</p>
|
||
</div></blockquote>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">cycles</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">getAvailableTimes</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||
<span class="n">times</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">getAvailableTimes</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
||
<span class="n">fcstRun</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">getForecastRun</span><span class="p">(</span><span class="n">cycles</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">times</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Get the most recent grid data</span>
|
||
<span class="n">response</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">getGridData</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="p">[</span><span class="n">fcstRun</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span>
|
||
|
||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Number of available times:'</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">times</span><span class="p">))</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Number of available forecast runs:'</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">fcstRun</span><span class="p">))</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Number</span> <span class="n">of</span> <span class="n">available</span> <span class="n">times</span><span class="p">:</span> <span class="mi">74</span>
|
||
<span class="n">Number</span> <span class="n">of</span> <span class="n">available</span> <span class="n">forecast</span> <span class="n">runs</span><span class="p">:</span> <span class="mi">8</span>
|
||
</pre></div>
|
||
</div>
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html">Top</a></p>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="function-make-map">
|
||
<h3>4 Function: make_map()<a class="headerlink" href="#function-make-map" title="Permalink to this headline"></a></h3>
|
||
<p>In order to plot more than one image, it’s easiest to define common
|
||
logic in a function. Here, a new function called <strong>make_map</strong> is
|
||
defined. This function uses the <a class="reference external" href="https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.pyplot.html">matplotlib.pyplot package
|
||
(plt)</a>
|
||
to create a figure and axis. The coastlines (continental boundaries) are
|
||
added, along with lat/lon grids.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">make_map</span><span class="p">(</span><span class="n">bbox</span><span class="p">,</span> <span class="n">projection</span><span class="o">=</span><span class="n">ccrs</span><span class="o">.</span><span class="n">PlateCarree</span><span class="p">()):</span>
|
||
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="mi">9</span><span class="p">),</span>
|
||
<span class="n">subplot_kw</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">projection</span><span class="o">=</span><span class="n">projection</span><span class="p">))</span>
|
||
<span class="n">ax</span><span class="o">.</span><span class="n">set_extent</span><span class="p">(</span><span class="n">bbox</span><span class="p">)</span>
|
||
<span class="n">ax</span><span class="o">.</span><span class="n">coastlines</span><span class="p">(</span><span class="n">resolution</span><span class="o">=</span><span class="s1">'50m'</span><span class="p">)</span>
|
||
<span class="n">gl</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">gridlines</span><span class="p">(</span><span class="n">draw_labels</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||
<span class="n">gl</span><span class="o">.</span><span class="n">top_labels</span> <span class="o">=</span> <span class="n">gl</span><span class="o">.</span><span class="n">right_labels</span> <span class="o">=</span> <span class="kc">False</span>
|
||
<span class="n">gl</span><span class="o">.</span><span class="n">xformatter</span> <span class="o">=</span> <span class="n">LONGITUDE_FORMATTER</span>
|
||
<span class="n">gl</span><span class="o">.</span><span class="n">yformatter</span> <span class="o">=</span> <span class="n">LATITUDE_FORMATTER</span>
|
||
<span class="k">return</span> <span class="n">fig</span><span class="p">,</span> <span class="n">ax</span>
|
||
</pre></div>
|
||
</div>
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html">Top</a></p>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="use-the-grid-data">
|
||
<h3>5 Use the Grid Data!<a class="headerlink" href="#use-the-grid-data" title="Permalink to this headline"></a></h3>
|
||
<p>Here we get our grid data object from our previous response, and then
|
||
get the raw data array off that object. We also get the latitude and
|
||
longitude arrays, and create a bounding box that we’ll use when creating
|
||
our plots (by calling <strong>make_map</strong> defined above). Finally, we’ll
|
||
convert our data from degrees Kelvin to Farenheit to make the plot more
|
||
understandable.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">grid</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||
<span class="n">data</span> <span class="o">=</span> <span class="n">grid</span><span class="o">.</span><span class="n">getRawData</span><span class="p">()</span>
|
||
<span class="n">lons</span><span class="p">,</span> <span class="n">lats</span> <span class="o">=</span> <span class="n">grid</span><span class="o">.</span><span class="n">getLatLonCoords</span><span class="p">()</span>
|
||
<span class="n">bbox</span> <span class="o">=</span> <span class="p">[</span><span class="n">lons</span><span class="o">.</span><span class="n">min</span><span class="p">(),</span> <span class="n">lons</span><span class="o">.</span><span class="n">max</span><span class="p">(),</span> <span class="n">lats</span><span class="o">.</span><span class="n">min</span><span class="p">(),</span> <span class="n">lats</span><span class="o">.</span><span class="n">max</span><span class="p">()]</span>
|
||
|
||
<span class="c1"># Convert temp from Kelvin to F</span>
|
||
<span class="n">destUnit</span> <span class="o">=</span> <span class="s1">'F'</span>
|
||
<span class="n">data</span> <span class="o">=</span> <span class="n">convert_temperature</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="s1">'K'</span><span class="p">,</span> <span class="n">destUnit</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<section id="plot-using-pcolormesh">
|
||
<h4>5.1 Plot Using pcolormesh<a class="headerlink" href="#plot-using-pcolormesh" title="Permalink to this headline"></a></h4>
|
||
<p>This example shows how to use
|
||
<a class="reference external" href="https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.pyplot.pcolormesh.html">matplotlib.pyplot.pcolormesh</a>
|
||
to create a colorized plot. We use our <strong>make_map</strong> function to create a
|
||
subplot and then we create a color scale (cs) and colorbar (cbar) with a
|
||
label for our plot.</p>
|
||
<blockquote>
|
||
<div><p><strong>Note</strong>: You may see a warning appear with a red background, this is
|
||
okay, and will go away with subsequent runs of the cell.</p>
|
||
</div></blockquote>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">cmap</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">get_cmap</span><span class="p">(</span><span class="s1">'rainbow'</span><span class="p">)</span>
|
||
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">make_map</span><span class="p">(</span><span class="n">bbox</span><span class="o">=</span><span class="n">bbox</span><span class="p">)</span>
|
||
<span class="n">cs</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">pcolormesh</span><span class="p">(</span><span class="n">lons</span><span class="p">,</span> <span class="n">lats</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="n">cmap</span><span class="p">)</span>
|
||
<span class="n">cbar</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">cs</span><span class="p">,</span> <span class="n">shrink</span><span class="o">=</span><span class="mf">0.7</span><span class="p">,</span> <span class="n">orientation</span><span class="o">=</span><span class="s1">'horizontal'</span><span class="p">)</span>
|
||
<span class="n">cbar</span><span class="o">.</span><span class="n">set_label</span><span class="p">(</span><span class="n">grid</span><span class="o">.</span><span class="n">getLocationName</span><span class="p">()</span> <span class="o">+</span><span class="s2">" "</span><span class="o">+</span> <span class="n">grid</span><span class="o">.</span><span class="n">getLevel</span><span class="p">()</span> <span class="o">+</span> <span class="s2">" "</span> \
|
||
<span class="o">+</span> <span class="n">grid</span><span class="o">.</span><span class="n">getParameter</span><span class="p">()</span> <span class="o">+</span> <span class="s2">" ("</span> <span class="o">+</span> <span class="n">destUnit</span> <span class="o">+</span> <span class="s2">") "</span> \
|
||
<span class="o">+</span> <span class="s2">"valid "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">grid</span><span class="o">.</span><span class="n">getDataTime</span><span class="p">()</span><span class="o">.</span><span class="n">getRefTime</span><span class="p">()))</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">Users</span><span class="o">/</span><span class="n">scarter</span><span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">miniconda3</span><span class="o">/</span><span class="n">envs</span><span class="o">/</span><span class="n">python3</span><span class="o">-</span><span class="n">awips</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">python3</span><span class="mf">.9</span><span class="o">/</span><span class="n">site</span><span class="o">-</span><span class="n">packages</span><span class="o">/</span><span class="n">cartopy</span><span class="o">/</span><span class="n">mpl</span><span class="o">/</span><span class="n">geoaxes</span><span class="o">.</span><span class="n">py</span><span class="p">:</span><span class="mi">1598</span><span class="p">:</span> <span class="ne">UserWarning</span><span class="p">:</span> <span class="n">The</span> <span class="nb">input</span> <span class="n">coordinates</span> <span class="n">to</span> <span class="n">pcolormesh</span> <span class="n">are</span> <span class="n">interpreted</span> <span class="k">as</span> <span class="n">cell</span> <span class="n">centers</span><span class="p">,</span> <span class="n">but</span> <span class="n">are</span> <span class="ow">not</span> <span class="n">monotonically</span> <span class="n">increasing</span> <span class="ow">or</span> <span class="n">decreasing</span><span class="o">.</span> <span class="n">This</span> <span class="n">may</span> <span class="n">lead</span> <span class="n">to</span> <span class="n">incorrectly</span> <span class="n">calculated</span> <span class="n">cell</span> <span class="n">edges</span><span class="p">,</span> <span class="ow">in</span> <span class="n">which</span> <span class="n">case</span><span class="p">,</span> <span class="n">please</span> <span class="n">supply</span> <span class="n">explicit</span> <span class="n">cell</span> <span class="n">edges</span> <span class="n">to</span> <span class="n">pcolormesh</span><span class="o">.</span>
|
||
<span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">C</span><span class="p">,</span> <span class="n">shading</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pcolorargs</span><span class="p">(</span><span class="s1">'pcolormesh'</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span>
|
||
</pre></div>
|
||
</div>
|
||
<img alt="../../_images/Grids_and_Cartopy_21_1.png" src="../../_images/Grids_and_Cartopy_21_1.png" />
|
||
</section>
|
||
<section id="plot-using-contourf">
|
||
<h4>5.2 Plot Using contourf<a class="headerlink" href="#plot-using-contourf" title="Permalink to this headline"></a></h4>
|
||
<p>This example shows how to use
|
||
<a class="reference external" href="https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.pyplot.contourf.html">matplotlib.pyplot.contourf</a>
|
||
to create a colorized plot. We use our <strong>make_map</strong> function to create a
|
||
subplot and then we create a color scale (cs2) and colorbar (cbar2) with
|
||
a label for our plot.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig2</span><span class="p">,</span> <span class="n">ax2</span> <span class="o">=</span> <span class="n">make_map</span><span class="p">(</span><span class="n">bbox</span><span class="o">=</span><span class="n">bbox</span><span class="p">)</span>
|
||
<span class="n">cs2</span> <span class="o">=</span> <span class="n">ax2</span><span class="o">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">lons</span><span class="p">,</span> <span class="n">lats</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="mi">80</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="n">cmap</span><span class="p">,</span>
|
||
<span class="n">vmin</span><span class="o">=</span><span class="n">data</span><span class="o">.</span><span class="n">min</span><span class="p">(),</span> <span class="n">vmax</span><span class="o">=</span><span class="n">data</span><span class="o">.</span><span class="n">max</span><span class="p">())</span>
|
||
<span class="n">cbar2</span> <span class="o">=</span> <span class="n">fig2</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">cs2</span><span class="p">,</span> <span class="n">shrink</span><span class="o">=</span><span class="mf">0.7</span><span class="p">,</span> <span class="n">orientation</span><span class="o">=</span><span class="s1">'horizontal'</span><span class="p">)</span>
|
||
<span class="n">cbar2</span><span class="o">.</span><span class="n">set_label</span><span class="p">(</span><span class="n">grid</span><span class="o">.</span><span class="n">getLocationName</span><span class="p">()</span> <span class="o">+</span><span class="s2">" "</span><span class="o">+</span> <span class="n">grid</span><span class="o">.</span><span class="n">getLevel</span><span class="p">()</span> <span class="o">+</span> <span class="s2">" "</span> \
|
||
<span class="o">+</span> <span class="n">grid</span><span class="o">.</span><span class="n">getParameter</span><span class="p">()</span> <span class="o">+</span> <span class="s2">" ("</span> <span class="o">+</span> <span class="n">destUnit</span> <span class="o">+</span> <span class="s2">") "</span> \
|
||
<span class="o">+</span> <span class="s2">"valid "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">grid</span><span class="o">.</span><span class="n">getDataTime</span><span class="p">()</span><span class="o">.</span><span class="n">getRefTime</span><span class="p">()))</span>
|
||
</pre></div>
|
||
</div>
|
||
<img alt="../../_images/Grids_and_Cartopy_23_0.png" src="../../_images/Grids_and_Cartopy_23_0.png" />
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html">Top</a></p>
|
||
</section>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="see-also">
|
||
<h3>6 See Also<a class="headerlink" href="#see-also" title="Permalink to this headline"></a></h3>
|
||
<section id="related-notebooks">
|
||
<h4>6.1 Related Notebooks<a class="headerlink" href="#related-notebooks" title="Permalink to this headline"></a></h4>
|
||
<ul class="simple">
|
||
<li><p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grid_Levels_and_Parameters.html">Grid Levels and
|
||
Parameters</a></p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="additional-documentation">
|
||
<h4>6.2 Additional Documentation<a class="headerlink" href="#additional-documentation" title="Permalink to this headline"></a></h4>
|
||
<p><strong>python-awips:</strong></p>
|
||
<ul class="simple">
|
||
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/api/DataAccessLayer.html">awips.DataAccessLayer</a></p></li>
|
||
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/api/PyGridData.html">awips.PyGridData</a></p></li>
|
||
</ul>
|
||
<p><strong>matplotlib:</strong></p>
|
||
<ul class="simple">
|
||
<li><p><a class="reference external" href="https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.pyplot.html">matplotlib.pyplot</a></p></li>
|
||
<li><p><a class="reference external" href="https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.pyplot.subplot.html">matplotlib.pyplot.subplot</a></p></li>
|
||
<li><p><a class="reference external" href="https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.pyplot.pcolormesh.html">matplotlib.pyplot.pcolormesh</a></p></li>
|
||
<li><p><a class="reference external" href="https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.pyplot.contourf.html">matplotlib.pyplot.contourf</a></p></li>
|
||
</ul>
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grids_and_Cartopy.html">Top</a></p>
|
||
<hr class="docutils" />
|
||
</section>
|
||
</section>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="Grid_Levels_and_Parameters.html" class="btn btn-neutral float-left" title="Grid Levels and Parameters" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="METAR_Station_Plot_with_MetPy.html" class="btn btn-neutral float-right" title="METAR Station Plot with MetPy" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2018, Unidata.</p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(true);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |