<!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>Draw a Direction Field — drawDirectionField • 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="Draw a Direction Field — drawDirectionField"><meta name="description" content="The direction field is indicated variously, depending on the value of
type:"><meta property="og:description" content="The direction field is indicated variously, depending on the value of
type:"></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>Draw a Direction Field</h1>
      <small class="dont-index">Source: <a href="https://github.com/dankelley/oce/blob/HEAD/R/oce.R" class="external-link"><code>R/oce.R</code></a></small>
      <div class="d-none name"><code>drawDirectionField.Rd</code></div>
    </div>

    <div class="ref-description section level2">
    <p>The direction field is indicated variously, depending on the value of
<code>type</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">drawDirectionField</span><span class="op">(</span></span>
<span>  <span class="va">x</span>,</span>
<span>  <span class="va">y</span>,</span>
<span>  <span class="va">u</span>,</span>
<span>  <span class="va">v</span>,</span>
<span>  <span class="va">scalex</span>,</span>
<span>  <span class="va">scaley</span>,</span>
<span>  <span class="va">skip</span>,</span>
<span>  length <span class="op">=</span> <span class="fl">0.05</span>,</span>
<span>  add <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  type <span class="op">=</span> <span class="fl">1</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>  pch <span class="op">=</span> <span class="fl">1</span>,</span>
<span>  cex <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">"cex"</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>  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>  xlab <span class="op">=</span> <span class="st">""</span>,</span>
<span>  ylab <span class="op">=</span> <span class="st">""</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="va">...</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-x-y">x, y<a class="anchor" aria-label="anchor" href="#arg-x-y"></a></dt>
<dd><p>coordinates at which velocities are specified. The
length of <code>x</code> and <code>y</code> depends on the form of <code>u</code>
and <code>v</code> (vectors or matrices).</p></dd>


<dt id="arg-u-v">u, v<a class="anchor" aria-label="anchor" href="#arg-u-v"></a></dt>
<dd><p>velocity components in the x and y directions. Can be
either vectors with the same length as <code>x, y</code>, or
matrices, of dimension <code>length(x)</code> by <code>length(y)</code>.</p></dd>


<dt id="arg-scalex-scaley">scalex, scaley<a class="anchor" aria-label="anchor" href="#arg-scalex-scaley"></a></dt>
<dd><p>scale to be used for the velocity arrows.
Exactly one of these must be specified.  Arrows that have
<code>u^2+v^2=1</code> will have length <code>scalex</code> along the x
axis, or <code>scaley</code> along the y axis, according to which
argument is given.</p></dd>


<dt id="arg-skip">skip<a class="anchor" aria-label="anchor" href="#arg-skip"></a></dt>
<dd><p>either an integer, or a two-element vector indicating
the number of points to skip when plotting arrows (for the
matrix <code>u, v</code> case). If a single value, the same
<code>skip</code> is applied to both the <code>x</code> and <code>y</code>
directions. If a two-element vector, specifies different values
for the <code>x</code> and <code>y</code> directions.</p></dd>


<dt id="arg-length">length<a class="anchor" aria-label="anchor" href="#arg-length"></a></dt>
<dd><p>indication of <em>width</em> of arrowheads. The
somewhat confusing name of this argument is a consequence of
the fact that it is passed to <code><a href="https://rdrr.io/r/graphics/arrows.html" class="external-link">arrows()</a></code> for drawing
arrows.  Note that the present default is smaller than the
default used by <code><a href="https://rdrr.io/r/graphics/arrows.html" class="external-link">arrows()</a></code>.</p></dd>


<dt id="arg-add">add<a class="anchor" aria-label="anchor" href="#arg-add"></a></dt>
<dd><p>if <code>TRUE</code>, the arrows are added to an existing
plot; otherwise, a new plot is started by calling
<code><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot()</a></code> with <code>x</code>, <code>y</code> and <code>type="n"</code>.
In other words, the plot will be very basic. In most cases, the
user will probably want to draw a diagram first, and <code>add</code>
the direction field later.</p></dd>


<dt id="arg-type">type<a class="anchor" aria-label="anchor" href="#arg-type"></a></dt>
<dd><p>indication of the style of arrow-like indication of the
direction.</p></dd>


<dt id="arg-col">col<a class="anchor" aria-label="anchor" href="#arg-col"></a></dt>
<dd><p>color of line segments or arrows; see <code><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par()</a></code> for meaning</p></dd>


<dt id="arg-pch-cex">pch, cex<a class="anchor" aria-label="anchor" href="#arg-pch-cex"></a></dt>
<dd><p>plot character and expansion factor, used for
<code>type=1</code>; see <code><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par()</a></code> for meanings</p></dd>


<dt id="arg-lwd-lty">lwd, lty<a class="anchor" aria-label="anchor" href="#arg-lwd-lty"></a></dt>
<dd><p>line width and type, used for <code>type=2</code>; see <code><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par()</a></code> for meaning</p></dd>


<dt id="arg-xlab-ylab">xlab, ylab<a class="anchor" aria-label="anchor" href="#arg-xlab-ylab"></a></dt>
<dd><p><code>x</code> and <code>y</code> axis labels</p></dd>


<dt id="arg-debug">debug<a class="anchor" aria-label="anchor" href="#arg-debug"></a></dt>
<dd><p>debugging value; set to a positive integer to get
debugging information.</p></dd>


<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt>
<dd><p>other arguments to be passed to plotting functions
(e.g. axis labels, etc).</p></dd>

</dl></div>
    <div class="section level2">
    <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2>
    <p>None.</p>
    </div>
    <div class="section level2">
    <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2>

<ul><li><p>For <code>type=1</code>, each indicator is drawn with a symbol, according to the
value of <code>pch</code> (either supplied globally, or as an element of the
<code>...</code> list) and of size <code>cex</code>, and color <code>col</code>.   Then, a
line segment is drawn for each, and for this <code>lwd</code> and <code>col</code> may
be set globally or in the <code>...</code> list.</p></li>
<li><p>For <code>type=2</code>, the points are not drawn, but arrows are drawn instead
of the line segments.  Again, <code>lwd</code> and <code>col</code> control the type of
the line.</p></li>
</ul></div>
    <div class="section level2">
    <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2>
    <p>Dan Kelley and Clark Richards</p>
    </div>

    <div class="section level2">
    <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2>
    <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><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="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="op">-</span><span class="fl">1.5</span>, <span class="fl">1.5</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="op">-</span><span class="fl">1.5</span>, <span class="fl">1.5</span><span class="op">)</span>, xlab <span class="op">=</span> <span class="st">""</span>, ylab <span class="op">=</span> <span class="st">""</span>, type <span class="op">=</span> <span class="st">"n"</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="fu">drawDirectionField</span><span class="op">(</span></span></span>
<span class="r-in"><span>    x <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">0</span>, <span class="fl">2</span><span class="op">)</span>, y <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">0</span>, <span class="fl">2</span><span class="op">)</span>,</span></span>
<span class="r-in"><span>    u <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span>, <span class="fl">1</span><span class="op">)</span>, v <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span>, <span class="op">-</span><span class="fl">1</span><span class="op">)</span>, scalex <span class="op">=</span> <span class="fl">0.5</span>, add <span class="op">=</span> <span class="cn">TRUE</span></span></span>
<span class="r-in"><span><span class="op">)</span></span></span>
<span class="r-plt img"><img src="drawDirectionField-1.png" alt="" width="700" height="700"></span>
<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="op">-</span><span class="fl">1.5</span>, <span class="fl">1.5</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="op">-</span><span class="fl">1.5</span>, <span class="fl">1.5</span><span class="op">)</span>, xlab <span class="op">=</span> <span class="st">""</span>, ylab <span class="op">=</span> <span class="st">""</span>, type <span class="op">=</span> <span class="st">"n"</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="fu">drawDirectionField</span><span class="op">(</span></span></span>
<span class="r-in"><span>    x <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">0</span>, <span class="fl">2</span><span class="op">)</span>, y <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">0</span>, <span class="fl">2</span><span class="op">)</span>,</span></span>
<span class="r-in"><span>    u <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span>, <span class="fl">1</span><span class="op">)</span>, v <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span>, <span class="op">-</span><span class="fl">1</span><span class="op">)</span>, scalex <span class="op">=</span> <span class="fl">0.5</span>, add <span class="op">=</span> <span class="cn">TRUE</span>, type <span class="op">=</span> <span class="fl">2</span></span></span>
<span class="r-in"><span><span class="op">)</span></span></span>
<span class="r-plt img"><img src="drawDirectionField-2.png" alt="" width="700" height="700"></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># 2D example</span></span></span>
<span class="r-in"><span><span class="va">x</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="op">-</span><span class="fl">2</span>, <span class="fl">2</span>, <span class="fl">0.1</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">y</span> <span class="op">&lt;-</span> <span class="va">x</span></span></span>
<span class="r-in"><span><span class="va">xx</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/expand.grid.html" class="external-link">expand.grid</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">y</span><span class="op">)</span><span class="op">[</span>, <span class="fl">1</span><span class="op">]</span></span></span>
<span class="r-in"><span><span class="va">yy</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/expand.grid.html" class="external-link">expand.grid</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">y</span><span class="op">)</span><span class="op">[</span>, <span class="fl">2</span><span class="op">]</span></span></span>
<span class="r-in"><span><span class="va">z</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/matrix.html" class="external-link">matrix</a></span><span class="op">(</span><span class="va">xx</span> <span class="op">*</span> <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">exp</a></span><span class="op">(</span><span class="op">-</span><span class="va">xx</span><span class="op">^</span><span class="fl">2</span> <span class="op">-</span> <span class="va">yy</span><span class="op">^</span><span class="fl">2</span><span class="op">)</span>, nrow <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="va">x</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">gz</span> <span class="op">&lt;-</span> <span class="fu"><a href="grad.html">grad</a></span><span class="op">(</span><span class="va">z</span>, <span class="va">x</span>, <span class="va">y</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="fu">drawDirectionField</span><span class="op">(</span><span class="va">x</span>, <span class="va">y</span>, <span class="va">gz</span><span class="op">$</span><span class="va">gx</span>, <span class="va">gz</span><span class="op">$</span><span class="va">gy</span>, scalex <span class="op">=</span> <span class="fl">0.5</span>, type <span class="op">=</span> <span class="fl">2</span>, len <span class="op">=</span> <span class="fl">0.02</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="fu"><a href="oce.contour.html">oceContour</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">y</span>, <span class="va">z</span>, add <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span>
<span class="r-plt img"><img src="drawDirectionField-3.png" alt="" width="700" height="700"></span>
<span class="r-in"><span></span></span>
</code></pre></div>
    </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>

