<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Add Contours on a Existing map — mapContour • oce</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.4.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.4.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Add Contours on a Existing map — mapContour"><meta name="description" content="Draw contour lines to an existing map, using mapLines().
Note that label placement in mapContour is handled differently
than in contour()."><meta property="og:description" content="Draw contour lines to an existing map, using mapLines().
Note that label placement in mapContour is handled differently
than in contour()."></head><body>
    <a href="#main" class="visually-hidden-focusable">Skip to contents</a>


    <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="light" aria-label="Site navigation"><div class="container">

    <a class="navbar-brand me-2" href="../index.html">oce</a>

    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">1.8-4</small>


    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div id="navbar" class="collapse navbar-collapse ms-3">
      <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li>
<li class="nav-item dropdown">
  <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button>
  <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/A_oce.html">1. Introduction to Oce</a></li>
    <li><a class="dropdown-item" href="../articles/B_ctd.html">2. Analysis of CTD data</a></li>
    <li><a class="dropdown-item" href="../articles/C_adp.html">3. Analysis of acoustic-Doppler data</a></li>
    <li><a class="dropdown-item" href="../articles/D_map_projections.html">4. Using map projections</a></li>
    <li><a class="dropdown-item" href="../articles/E_flags.html">5. Dealing with data-quality flags</a></li>
    <li><a class="dropdown-item" href="../articles/F_subclassing.html">6. Subclassing oce objects</a></li>
    <li><a class="dropdown-item" href="../articles/G_altering_defaults.html">7. Altering oce Defaults</a></li>
    <li><a class="dropdown-item" href="../articles/H_tides.html">8. Tidal Analysis</a></li>
  </ul></li>
<li class="nav-item"><a class="nav-link" href="../news/index.html">Changelog</a></li>
      </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search">
 <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li>
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/dankelley/oce/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li>
      </ul></div>


  </div>
</nav><div class="container template-reference-topic">
<div class="row">
  <main id="main" class="col-md-9"><div class="page-header">

      <h1>Add Contours on a Existing map</h1>
      <small class="dont-index">Source: <a href="https://github.com/dankelley/oce/blob/HEAD/R/map.R" class="external-link"><code>R/map.R</code></a></small>
      <div class="d-none name"><code>mapContour.Rd</code></div>
    </div>

    <div class="ref-description section level2">
    <p>Draw contour lines to an existing map, using <code><a href="mapLines.html">mapLines()</a></code>.
Note that label placement in <code>mapContour</code> is handled differently
than in <code><a href="https://rdrr.io/r/graphics/contour.html" class="external-link">contour()</a></code>.</p>
    </div>

    <div class="section level2">
    <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2>
    <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mapContour</span><span class="op">(</span></span>
<span>  <span class="va">longitude</span>,</span>
<span>  <span class="va">latitude</span>,</span>
<span>  <span class="va">z</span>,</span>
<span>  nlevels <span class="op">=</span> <span class="fl">10</span>,</span>
<span>  levels <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/pretty.html" class="external-link">pretty</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/range.html" class="external-link">range</a></span><span class="op">(</span><span class="va">z</span>, na.rm <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>, <span class="va">nlevels</span><span class="op">)</span>,</span>
<span>  labcex <span class="op">=</span> <span class="fl">0.6</span>,</span>
<span>  drawlabels <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span>  underlay <span class="op">=</span> <span class="st">"erase"</span>,</span>
<span>  col <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></span><span class="op">(</span><span class="st">"fg"</span><span class="op">)</span>,</span>
<span>  lty <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></span><span class="op">(</span><span class="st">"lty"</span><span class="op">)</span>,</span>
<span>  lwd <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></span><span class="op">(</span><span class="st">"lwd"</span><span class="op">)</span>,</span>
<span>  debug <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></span><span class="op">(</span><span class="st">"oceDebug"</span><span class="op">)</span></span>
<span><span class="op">)</span></span></code></pre></div>
    </div>

    <div class="section level2">
    <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2>


<dl><dt id="arg-longitude">longitude<a class="anchor" aria-label="anchor" href="#arg-longitude"></a></dt>
<dd><p>numeric vector of longitudes of points to be
plotted, or an object of class <code>topo</code> (see <a href="topo-class.html">topo</a>), in which
case <code>longitude</code>, <code>latitude</code> and <code>z</code> are inferred from that object.
Importantly, the <code>longitude</code> system must match that of the
<code><a href="mapPlot.html">mapPlot()</a></code> call that made the underlying plot. If not, the
contours can have spurious lines that run across the plot. See
“Dealing with longitude conventions” for a method
of handling conflicting longitude conventions between <code><a href="mapPlot.html">mapPlot()</a></code>
and <code>mapContour()</code>.</p></dd>


<dt id="arg-latitude">latitude<a class="anchor" aria-label="anchor" href="#arg-latitude"></a></dt>
<dd><p>numeric vector of latitudes of points to be plotted.</p></dd>


<dt id="arg-z">z<a class="anchor" aria-label="anchor" href="#arg-z"></a></dt>
<dd><p>matrix to be contoured. The number of rows and columns in
<code>z</code> must equal the lengths of <code>longitude</code> and <code>latitude</code>,
respectively.</p></dd>


<dt id="arg-nlevels">nlevels<a class="anchor" aria-label="anchor" href="#arg-nlevels"></a></dt>
<dd><p>number of contour levels, if and only if <code>levels</code> is
not supplied.</p></dd>


<dt id="arg-levels">levels<a class="anchor" aria-label="anchor" href="#arg-levels"></a></dt>
<dd><p>vector of contour levels.</p></dd>


<dt id="arg-labcex">labcex<a class="anchor" aria-label="anchor" href="#arg-labcex"></a></dt>
<dd><p><code>cex</code> value used for contour labelling. As with
<code><a href="https://rdrr.io/r/graphics/contour.html" class="external-link">contour()</a></code>, this is an absolute size, not a multiple of
<code><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></code><code>("cex")</code>.</p></dd>


<dt id="arg-drawlabels">drawlabels<a class="anchor" aria-label="anchor" href="#arg-drawlabels"></a></dt>
<dd><p>logical value or vector indicating whether to
draw contour labels.  If the length of <code>drawlabels</code> is less than
the number of levels specified, then <code><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep()</a></code> is used to increase
the length, providing a value for each contour line. For those
levels that are thus indicated, labels are added, at a spot where
the contour line is closest to horizontal on the page. First,
though, the region underneath the label is filled with the colour
given by <code><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></code><code>("bg")</code>. See “Limitations” for notes on the
status of contour labelling, and its limitations.</p></dd>


<dt id="arg-underlay">underlay<a class="anchor" aria-label="anchor" href="#arg-underlay"></a></dt>
<dd><p>character value relating to handling labels. If
this equals <code>"erase"</code> (which is the default), then the contour line
is drawn  first, then the area under the label is erased (filled
with white 'ink'), and then the label is drawn. This can be useful
in drawing coarsely-spaced labelled contours on top of
finely-spaced unlabelled contours. On the other hand, if <code>underlay</code>
equals <code>"interrupt"</code>, then the contour line is interrupted in the
region of the label, which is closer to the scheme used by the base
<code><a href="https://rdrr.io/r/graphics/contour.html" class="external-link">contour()</a></code> function.</p></dd>


<dt id="arg-col">col<a class="anchor" aria-label="anchor" href="#arg-col"></a></dt>
<dd><p>colour of the contour line, as for <code><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></code><code>("col")</code>,
except here <code>col</code> gets lengthened by calling <code><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep()</a></code>,
so that individual contours can be coloured distinctly.</p></dd>


<dt id="arg-lty">lty<a class="anchor" aria-label="anchor" href="#arg-lty"></a></dt>
<dd><p>type of the contour line, as for <code><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></code><code>("lty")</code>,
except for lengthening, as described for <code>col</code>.</p></dd>


<dt id="arg-lwd">lwd<a class="anchor" aria-label="anchor" href="#arg-lwd"></a></dt>
<dd><p>width of the contour line, as for <code><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></code><code>("lwd")</code>,
except for lengthening, as described for <code>col</code> and <code>lty</code>.</p></dd>


<dt id="arg-debug">debug<a class="anchor" aria-label="anchor" href="#arg-debug"></a></dt>
<dd><p>an integer specifying whether debugging information is
to be printed during the processing. This is a general parameter that
is used by many <code>oce</code> functions. Generally, setting <code>debug=0</code>
turns off the printing, while higher values suggest that more information
be printed. If one function calls another, it usually reduces the value of
<code>debug</code> first, so that a user can often obtain deeper debugging
by specifying higher <code>debug</code> values.</p></dd>

</dl></div>
    <div class="section level2">
    <h2 id="sample-of-usage">Sample of Usage<a class="anchor" aria-label="anchor" href="#sample-of-usage"></a></h2>


<div class="sourceCode"><pre><code><span></span>
<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://dankelley.github.io/oce/">oce</a></span><span class="op">)</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/utils/data.html" class="external-link">data</a></span><span class="op">(</span><span class="va">coastlineWorld</span><span class="op">)</span></span>
<span><span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/ns-load.html" class="external-link">requireNamespace</a></span><span class="op">(</span><span class="st">"ocedata"</span>, quietly<span class="op">=</span><span class="cn">TRUE</span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span>
<span>    <span class="fu"><a href="https://rdrr.io/r/utils/data.html" class="external-link">data</a></span><span class="op">(</span><span class="va">levitus</span>, package <span class="op">=</span> <span class="st">"ocedata"</span><span class="op">)</span></span>
<span>    <span class="fu"><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></span><span class="op">(</span>mar <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="fl">1</span>, <span class="fl">4</span><span class="op">)</span><span class="op">)</span></span>
<span>    <span class="fu"><a href="../reference/mapPlot.html">mapPlot</a></span><span class="op">(</span><span class="va">coastlineWorld</span>, projection <span class="op">=</span> <span class="st">"+proj=robin"</span>, col <span class="op">=</span> <span class="st">"lightgray"</span><span class="op">)</span></span>
<span>    <span class="fu"><a href="../reference/mapContour.html">mapContour</a></span><span class="op">(</span><span class="va">levitus</span><span class="op">$</span><span class="va">longitude</span>, <span class="va">levitus</span><span class="op">$</span><span class="va">latitude</span>, <span class="va">levitus</span><span class="op">$</span><span class="va">SST</span><span class="op">)</span></span>
<span><span class="op">}</span></span></code></pre></div>

    </div>
    <div class="section level2">
    <h2 id="dealing-with-longitude-conventions">Dealing with longitude conventions<a class="anchor" aria-label="anchor" href="#dealing-with-longitude-conventions"></a></h2>



<p>Suppose a map has been plotted using longitudes that are bound between -180
and 180. To overlay contours defined with longitude bound between 0 and 360
(as for the built-in <code>coastlineWorld</code> dataset), try Clark Richards' method
(<a href="https://github.com/dankelley/oce/issues/2217" class="external-link">https://github.com/dankelley/oce/issues/2217</a>, as below.</p>
<div class="sourceCode"><pre><code><span></span>
<span><span class="co"># Start with z=z(lon,lat), with lon bound by 0 and 360</span></span>
<span><span class="va">z2</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/cbind.html" class="external-link">rbind</a></span><span class="op">(</span><span class="va">z</span><span class="op">[</span><span class="va">lon</span> <span class="op">&gt;</span> <span class="fl">180</span>, <span class="op">]</span>, <span class="va">z</span><span class="op">[</span><span class="va">lon</span> <span class="op">&lt;=</span> <span class="fl">180</span>, <span class="op">]</span><span class="op">)</span></span>
<span><span class="va">lon2</span> <span class="op">&lt;-</span> <span class="va">lon</span> <span class="op">+</span> <span class="fl">180</span></span>
<span><span class="fu"><a href="../reference/mapContour.html">mapContour</a></span><span class="op">(</span><span class="va">lon2</span>, <span class="va">lat</span>, <span class="va">z2</span><span class="op">)</span></span></code></pre></div>

    </div>
    <div class="section level2">
    <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2>
    <div class="dont-index"><p>A map must first have been created with <code><a href="mapPlot.html">mapPlot()</a></code>.</p>
<p>Other functions related to maps:
<code><a href="formatPosition.html">formatPosition</a>()</code>,
<code><a href="lonlat2map.html">lonlat2map</a>()</code>,
<code><a href="lonlat2utm.html">lonlat2utm</a>()</code>,
<code><a href="map2lonlat.html">map2lonlat</a>()</code>,
<code><a href="mapArrows.html">mapArrows</a>()</code>,
<code><a href="mapAxis.html">mapAxis</a>()</code>,
<code><a href="mapCoordinateSystem.html">mapCoordinateSystem</a>()</code>,
<code><a href="mapDirectionField.html">mapDirectionField</a>()</code>,
<code><a href="mapGrid.html">mapGrid</a>()</code>,
<code><a href="mapImage.html">mapImage</a>()</code>,
<code><a href="mapLines.html">mapLines</a>()</code>,
<code><a href="mapLocator.html">mapLocator</a>()</code>,
<code><a href="mapLongitudeLatitudeXY.html">mapLongitudeLatitudeXY</a>()</code>,
<code><a href="mapPlot.html">mapPlot</a>()</code>,
<code><a href="mapPoints.html">mapPoints</a>()</code>,
<code><a href="mapPolygon.html">mapPolygon</a>()</code>,
<code><a href="mapScalebar.html">mapScalebar</a>()</code>,
<code><a href="mapText.html">mapText</a>()</code>,
<code><a href="mapTissot.html">mapTissot</a>()</code>,
<code><a href="oceCRS.html">oceCRS</a>()</code>,
<code><a href="oceProject.html">oceProject</a>()</code>,
<code><a href="shiftLongitude.html">shiftLongitude</a>()</code>,
<code><a href="usrLonLat.html">usrLonLat</a>()</code>,
<code><a href="utm2lonlat.html">utm2lonlat</a>()</code></p></div>
    </div>
    <div class="section level2">
    <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2>
    <p>Dan Kelley</p>
    </div>

  </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
    </nav></aside></div>


    <footer><div class="pkgdown-footer-left">
  <p>Developed by Dan Kelley, Clark Richards.</p>
</div>

<div class="pkgdown-footer-right">
  <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.0.9000.</p>
</div>

    </footer></div>





  </body></html>

