<!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"><meta name="description" content="geom_text_repel adds text directly to the plot.
geom_label_repel draws a rectangle underneath the text, making it
easier to read. The text labels repel away from each other and away from
the data points."><title>Repulsive textual annotations. — geom_label_repel • ggrepel</title><!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png"><link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png"><link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png"><link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png"><link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png"><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><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous"><!-- bootstrap-toc --><script src="https://cdn.jsdelivr.net/gh/afeld/bootstrap-toc@v1.0.1/dist/bootstrap-toc.min.js" integrity="sha256-4veVQbu7//Lk5TSmc7YV48MxtMy98e26cf5MrgZYnwo=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- search --><script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/6.4.6/fuse.js" integrity="sha512-zv6Ywkjyktsohkbp9bb45V6tEMoWhzFzXis+LrMehmJZZSys19Yxf1dopHx7WzIKxr5tK2dVcYmaCk2uqdjF4A==" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/autocomplete.js/0.38.0/autocomplete.jquery.min.js" integrity="sha512-GU9ayf+66Xx2TmpxqJpliWbT5PiGYxpaG8rfnBEk1LL8l1KGkRShhngwdXK1UgqhAzWpZHSiYPc09/NwDQIGyg==" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/mark.min.js" integrity="sha512-5CYOlHXGh6QpOFA/TeTylKLWfB3ftPsde7AnmhuitiTX4K5SqCLBeKro6sPS8ilsz1Q4NRx3v8Ko2IBiszzdww==" crossorigin="anonymous"></script><!-- pkgdown --><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet"><meta property="og:title" content="Repulsive textual annotations. — geom_label_repel"><meta property="og:description" content="geom_text_repel adds text directly to the plot.
geom_label_repel draws a rectangle underneath the text, making it
easier to read. The text labels repel away from each other and away from
the data points."><meta property="og:image" content="https://ggrepel.slowkow.com/reference/figures/ggrepel-allison_horst.jpg"><meta property="og:image:alt" content="ggrepel: wonderfully repulsive labels"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:creator" content="@slowkow"><meta name="twitter:site" content="@slowkow"><!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=UA-15531613-2"></script><script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-15531613-2');
</script></head><body>
    <a href="#main" class="visually-hidden-focusable">Skip to contents</a>
    

    <nav class="navbar fixed-top navbar-light navbar-expand-lg bg-light"><div class="container">
    
    <a class="navbar-brand me-2" href="../index.html">ggrepel</a>

    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Released version">0.9.6</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="nav-item">
  <a class="nav-link" href="../articles/examples.html">Examples</a>
</li>
<li class="active nav-item">
  <a class="nav-link" href="../reference/index.html">Reference</a>
</li>
<li class="nav-item dropdown">
  <a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown" role="button" aria-expanded="false" aria-haspopup="true" id="dropdown-news">News</a>
  <div class="dropdown-menu" aria-labelledby="dropdown-news">
    <h6 class="dropdown-header" data-toc-skip>Release notes</h6>
    <a class="external-link dropdown-item" href="https://twitter.com/slowkow/status/1339364391377092609">Version 0.9.0</a>
    <div class="dropdown-divider"></div>
    <a class="dropdown-item" href="../news/index.html">Change log</a>
  </div>
</li>
<li class="nav-item">
  <a class="nav-link" href="../articles/related-work.html">Related work</a>
</li>
      </ul><form class="form-inline my-2 my-lg-0" role="search">
        <input type="search" class="form-control me-sm-2" aria-label="Toggle navigation" name="search-input" data-search-index="../search.json" id="search-input" placeholder="Search for" autocomplete="off"></form>

      <ul class="navbar-nav"><li class="nav-item">
  <a class="external-link nav-link" href="https://github.com/slowkow/ggrepel">
    <span class="fa fa-github"></span>
     
    GitHub
  </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">
      <img src="../logo.svg" class="logo" alt=""><h1>Repulsive textual annotations.</h1>
      <small class="dont-index">Source: <a href="https://github.com/slowkow/ggrepel/blob/HEAD/R/geom-label-repel.R" class="external-link"><code>R/geom-label-repel.R</code></a>, <a href="https://github.com/slowkow/ggrepel/blob/HEAD/R/geom-text-repel.R" class="external-link"><code>R/geom-text-repel.R</code></a></small>
      <div class="d-none name"><code>geom_text_repel.Rd</code></div>
    </div>

    <div class="ref-description section level2">
    <p><code>geom_text_repel</code> adds text directly to the plot.
<code>geom_label_repel</code> draws a rectangle underneath the text, making it
easier to read. The text labels repel away from each other and away from
the data points.</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">geom_label_repel</span><span class="op">(</span></span>
<span>  mapping <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  data <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  stat <span class="op">=</span> <span class="st">"identity"</span>,</span>
<span>  position <span class="op">=</span> <span class="st">"identity"</span>,</span>
<span>  parse <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  <span class="va">...</span>,</span>
<span>  box.padding <span class="op">=</span> <span class="fl">0.25</span>,</span>
<span>  label.padding <span class="op">=</span> <span class="fl">0.25</span>,</span>
<span>  point.padding <span class="op">=</span> <span class="fl">1e-06</span>,</span>
<span>  label.r <span class="op">=</span> <span class="fl">0.15</span>,</span>
<span>  label.size <span class="op">=</span> <span class="fl">0.25</span>,</span>
<span>  min.segment.length <span class="op">=</span> <span class="fl">0.5</span>,</span>
<span>  arrow <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  force <span class="op">=</span> <span class="fl">1</span>,</span>
<span>  force_pull <span class="op">=</span> <span class="fl">1</span>,</span>
<span>  max.time <span class="op">=</span> <span class="fl">0.5</span>,</span>
<span>  max.iter <span class="op">=</span> <span class="fl">10000</span>,</span>
<span>  max.overlaps <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">"ggrepel.max.overlaps"</span>, default <span class="op">=</span> <span class="fl">10</span><span class="op">)</span>,</span>
<span>  nudge_x <span class="op">=</span> <span class="fl">0</span>,</span>
<span>  nudge_y <span class="op">=</span> <span class="fl">0</span>,</span>
<span>  xlim <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="cn">NA</span>, <span class="cn">NA</span><span class="op">)</span>,</span>
<span>  ylim <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="cn">NA</span>, <span class="cn">NA</span><span class="op">)</span>,</span>
<span>  na.rm <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  show.legend <span class="op">=</span> <span class="cn">NA</span>,</span>
<span>  direction <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="st">"both"</span>, <span class="st">"y"</span>, <span class="st">"x"</span><span class="op">)</span>,</span>
<span>  seed <span class="op">=</span> <span class="cn">NA</span>,</span>
<span>  verbose <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  inherit.aes <span class="op">=</span> <span class="cn">TRUE</span></span>
<span><span class="op">)</span></span>
<span></span>
<span><span class="fu">geom_text_repel</span><span class="op">(</span></span>
<span>  mapping <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  data <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  stat <span class="op">=</span> <span class="st">"identity"</span>,</span>
<span>  position <span class="op">=</span> <span class="st">"identity"</span>,</span>
<span>  parse <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  <span class="va">...</span>,</span>
<span>  box.padding <span class="op">=</span> <span class="fl">0.25</span>,</span>
<span>  point.padding <span class="op">=</span> <span class="fl">1e-06</span>,</span>
<span>  min.segment.length <span class="op">=</span> <span class="fl">0.5</span>,</span>
<span>  arrow <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  force <span class="op">=</span> <span class="fl">1</span>,</span>
<span>  force_pull <span class="op">=</span> <span class="fl">1</span>,</span>
<span>  max.time <span class="op">=</span> <span class="fl">0.5</span>,</span>
<span>  max.iter <span class="op">=</span> <span class="fl">10000</span>,</span>
<span>  max.overlaps <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">"ggrepel.max.overlaps"</span>, default <span class="op">=</span> <span class="fl">10</span><span class="op">)</span>,</span>
<span>  nudge_x <span class="op">=</span> <span class="fl">0</span>,</span>
<span>  nudge_y <span class="op">=</span> <span class="fl">0</span>,</span>
<span>  xlim <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="cn">NA</span>, <span class="cn">NA</span><span class="op">)</span>,</span>
<span>  ylim <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="cn">NA</span>, <span class="cn">NA</span><span class="op">)</span>,</span>
<span>  na.rm <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  show.legend <span class="op">=</span> <span class="cn">NA</span>,</span>
<span>  direction <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="st">"both"</span>, <span class="st">"y"</span>, <span class="st">"x"</span><span class="op">)</span>,</span>
<span>  seed <span class="op">=</span> <span class="cn">NA</span>,</span>
<span>  verbose <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  inherit.aes <span class="op">=</span> <span class="cn">TRUE</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>mapping</dt>
<dd><p>Set of aesthetic mappings created by <code><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></code> or
<code><a href="https://ggplot2.tidyverse.org/reference/aes_.html" class="external-link">aes_</a></code>. If specified and <code>inherit.aes = TRUE</code> (the
default), is combined with the default mapping at the top level of the
plot. You only need to supply <code>mapping</code> if there isn't a mapping
defined for the plot.</p></dd>


<dt>data</dt>
<dd><p>A data frame. If specified, overrides the default data frame
defined at the top level of the plot.</p></dd>


<dt>stat</dt>
<dd><p>The statistical transformation to use on the data for this
layer, as a string.</p></dd>


<dt>position</dt>
<dd><p>Position adjustment, either as a string, or the result of
a call to a position adjustment function.</p></dd>


<dt>parse</dt>
<dd><p>If TRUE, the labels will be parsed into expressions and
displayed as described in ?plotmath</p></dd>


<dt>...</dt>
<dd><p>other arguments passed on to <code><a href="https://ggplot2.tidyverse.org/reference/layer.html" class="external-link">layer</a></code>. There are
  three types of arguments you can use here:</p>
<p></p><ul><li><p>Aesthetics: to set an aesthetic to a fixed value, like
       <code>colour = "red"</code> or <code>size = 3</code>.</p></li>
<li><p>Other arguments to the layer, for example you override the
      default <code>stat</code> associated with the layer.</p></li>
<li><p>Other arguments passed on to the stat.</p></li>
</ul></dd>


<dt>box.padding</dt>
<dd><p>Amount of padding around bounding box, as unit or number.
Defaults to 0.25. (Default unit is lines, but other units can be specified
by passing <code>unit(x, "units")</code>).</p></dd>


<dt>label.padding</dt>
<dd><p>Amount of padding around label, as unit or number.
Defaults to 0.25. (Default unit is lines, but other units can be specified
by passing <code>unit(x, "units")</code>).</p></dd>


<dt>point.padding</dt>
<dd><p>Amount of padding around labeled point, as unit or
number. Defaults to 0. (Default unit is lines, but other units can be
specified by passing <code>unit(x, "units")</code>).</p></dd>


<dt>label.r</dt>
<dd><p>Radius of rounded corners, as unit or number. Defaults
to 0.15. (Default unit is lines, but other units can be specified by
passing <code>unit(x, "units")</code>).</p></dd>


<dt>label.size</dt>
<dd><p>Size of label border, in mm.</p></dd>


<dt>min.segment.length</dt>
<dd><p>Skip drawing segments shorter than this, as unit or
number. Defaults to 0.5. (Default unit is lines, but other units can be
specified by passing <code>unit(x, "units")</code>).</p></dd>


<dt>arrow</dt>
<dd><p>specification for arrow heads, as created by <code><a href="https://rdrr.io/r/grid/arrow.html" class="external-link">arrow</a></code></p></dd>


<dt>force</dt>
<dd><p>Force of repulsion between overlapping text labels. Defaults
to 1.</p></dd>


<dt>force_pull</dt>
<dd><p>Force of attraction between a text label and its
corresponding data point. Defaults to 1.</p></dd>


<dt>max.time</dt>
<dd><p>Maximum number of seconds to try to resolve overlaps.
Defaults to 0.5.</p></dd>


<dt>max.iter</dt>
<dd><p>Maximum number of iterations to try to resolve overlaps.
Defaults to 10000.</p></dd>


<dt>max.overlaps</dt>
<dd><p>Exclude text labels when they overlap too many other
things. For each text label, we count how many other text labels or other
data points it overlaps, and exclude the text label if it has too many overlaps.
Defaults to 10.</p></dd>


<dt>nudge_x, nudge_y</dt>
<dd><p>Horizontal and vertical adjustments to nudge the
starting position of each text label. The units for <code>nudge_x</code> and
<code>nudge_y</code> are the same as for the data units on the x-axis and y-axis.</p></dd>


<dt>xlim, ylim</dt>
<dd><p>Limits for the x and y axes. Text labels will be constrained
to these limits. By default, text labels are constrained to the entire plot
area.</p></dd>


<dt>na.rm</dt>
<dd><p>If <code>FALSE</code> (the default), removes missing values with
a warning.  If <code>TRUE</code> silently removes missing values.</p></dd>


<dt>show.legend</dt>
<dd><p>logical. Should this layer be included in the legends?
<code>NA</code>, the default, includes if any aesthetics are mapped.
<code>FALSE</code> never includes, and <code>TRUE</code> always includes.</p></dd>


<dt>direction</dt>
<dd><p>"both", "x", or "y" -- direction in which to adjust position of labels</p></dd>


<dt>seed</dt>
<dd><p>Random seed passed to <code><a href="https://rdrr.io/r/base/Random.html" class="external-link">set.seed</a></code>. Defaults to
<code>NA</code>, which means that <code>set.seed</code> will not be called.</p></dd>


<dt>verbose</dt>
<dd><p>If <code>TRUE</code>, some diagnostics of the repel algorithm are printed</p></dd>


<dt>inherit.aes</dt>
<dd><p>If <code>FALSE</code>, overrides the default aesthetics,
rather than combining with them. This is most useful for helper functions
that define both data and aesthetics and shouldn't inherit behaviour from
the default plot specification, e.g. <code><a href="https://ggplot2.tidyverse.org/reference/borders.html" class="external-link">borders</a></code>.</p></dd>

</dl></div>
    <div class="section level2">
    <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2>
    <p>These geoms are based on <code><a href="https://ggplot2.tidyverse.org/reference/geom_text.html" class="external-link">geom_text</a></code> and
<code><a href="https://ggplot2.tidyverse.org/reference/geom_text.html" class="external-link">geom_label</a></code>. See the documentation for those
functions for more details. Differences from those functions are noted
here.</p>
<p>Text labels have height and width, but they are physical units, not data
units. The amount of space they occupy on that plot is not constant in data
units: when you resize a plot, labels stay the same size, but the size of
the axes changes. The text labels are repositioned after resizing a plot.</p>
    </div>
    <div class="section level2">
    <h2 id="geom-label-repel"><code>geom_label_repel</code><a class="anchor" aria-label="anchor" href="#geom-label-repel"></a></h2>
    

<p>Currently <code>geom_label_repel</code> does not support the <code>rot</code> argument
and is considerably slower than <code>geom_text_repel</code>. The <code>fill</code>
aesthetic controls the background colour of the label.</p>
    </div>
    <div class="section level2">
    <h2 id="alignment-with-hjust-or-vjust">Alignment with <code>hjust</code> or <code>vjust</code><a class="anchor" aria-label="anchor" href="#alignment-with-hjust-or-vjust"></a></h2>
    

<p>The arguments <code>hjust</code> and <code>vjust</code> are supported, but they only
control the initial positioning, so repulsive forces may disrupt alignment.
Alignment with <code>hjust</code> will be preserved if labels only move up and down
by using <code>direction="y"</code>. For <code>vjust</code>, use <code>direction="x"</code>.</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></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span><span class="va">mtcars</span>,</span></span>
<span class="r-in"><span>  <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span><span class="va">wt</span>, <span class="va">mpg</span>, label <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/colnames.html" class="external-link">rownames</a></span><span class="op">(</span><span class="va">mtcars</span><span class="op">)</span>, colour <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/factor.html" class="external-link">factor</a></span><span class="op">(</span><span class="va">cyl</span><span class="op">)</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span></span>
<span class="r-in"><span>  <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_point.html" class="external-link">geom_point</a></span><span class="op">(</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Avoid overlaps by repelling text labels</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span><span class="op">)</span></span></span>
<span class="r-plt img"><img src="geom_text_repel-1.png" alt="" width="700" height="433"></span>
<span class="r-in"><span><span class="co"># Labels with background</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_label_repel</span><span class="op">(</span><span class="op">)</span></span></span>
<span class="r-wrn co"><span class="r-pr">#&gt;</span> <span class="warning">Warning: </span>ggrepel: 2 unlabeled data points (too many overlaps). Consider increasing max.overlaps</span>
<span class="r-plt img"><img src="geom_text_repel-2.png" alt="" width="700" height="433"></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="cn">FALSE</span><span class="op">)</span> <span class="op">{</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span>family <span class="op">=</span> <span class="st">"Times New Roman"</span>,</span></span>
<span class="r-in"><span>  box.padding <span class="op">=</span> <span class="fl">0.5</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Add aesthetic mappings</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>alpha<span class="op">=</span><span class="va">wt</span>, size<span class="op">=</span><span class="va">mpg</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_label_repel</span><span class="op">(</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>fill<span class="op">=</span><span class="fu"><a href="https://rdrr.io/r/base/factor.html" class="external-link">factor</a></span><span class="op">(</span><span class="va">cyl</span><span class="op">)</span><span class="op">)</span>, colour<span class="op">=</span><span class="st">"white"</span>, segment.colour<span class="op">=</span><span class="st">"black"</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Draw all line segments</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span>min.segment.length <span class="op">=</span> <span class="fl">0</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Omit short line segments (default behavior)</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span>min.segment.length <span class="op">=</span> <span class="fl">0.5</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Omit all line segments</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span>segment.colour <span class="op">=</span> <span class="cn">NA</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Repel just the labels and totally ignore the data points</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span>point.size <span class="op">=</span> <span class="cn">NA</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Hide some of the labels, but repel from all data points</span></span></span>
<span class="r-in"><span><span class="va">mtcars</span><span class="op">$</span><span class="va">label</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/colnames.html" class="external-link">rownames</a></span><span class="op">(</span><span class="va">mtcars</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">mtcars</span><span class="op">$</span><span class="va">label</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">15</span><span class="op">]</span> <span class="op">&lt;-</span> <span class="st">""</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span>data <span class="op">=</span> <span class="va">mtcars</span>, <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span><span class="va">wt</span>, <span class="va">mpg</span>, label <span class="op">=</span> <span class="va">label</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Nudge the starting positions</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span>nudge_x <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/ifelse.html" class="external-link">ifelse</a></span><span class="op">(</span><span class="va">mtcars</span><span class="op">$</span><span class="va">cyl</span> <span class="op">==</span> <span class="fl">6</span>, <span class="fl">1</span>, <span class="fl">0</span><span class="op">)</span>,</span></span>
<span class="r-in"><span>                    nudge_y <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/ifelse.html" class="external-link">ifelse</a></span><span class="op">(</span><span class="va">mtcars</span><span class="op">$</span><span class="va">cyl</span> <span class="op">==</span> <span class="fl">6</span>, <span class="fl">8</span>, <span class="fl">0</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Change the text size</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>size <span class="op">=</span> <span class="va">wt</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="co"># Scale height of text, rather than sqrt(height)</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>size <span class="op">=</span> <span class="va">wt</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/scale_size.html" class="external-link">scale_radius</a></span><span class="op">(</span>range <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">3</span>,<span class="fl">6</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># You can display expressions by setting parse = TRUE.  The</span></span></span>
<span class="r-in"><span><span class="co"># details of the display are described in ?plotmath, but note that</span></span></span>
<span class="r-in"><span><span class="co"># geom_text_repel uses strings, not expressions.</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span> <span class="fu">geom_text_repel</span><span class="op">(</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>label <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="va">wt</span>, <span class="st">"^("</span>, <span class="va">cyl</span>, <span class="st">")"</span>, sep <span class="op">=</span> <span class="st">""</span><span class="op">)</span><span class="op">)</span>,</span></span>
<span class="r-in"><span>  parse <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Add a text annotation</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span></span></span>
<span class="r-in"><span>  <span class="fu">geom_text_repel</span><span class="op">(</span><span class="op">)</span> <span class="op">+</span></span></span>
<span class="r-in"><span>  <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/annotate.html" class="external-link">annotate</a></span><span class="op">(</span></span></span>
<span class="r-in"><span>    <span class="st">"text"</span>, label <span class="op">=</span> <span class="st">"plot mpg vs. wt"</span>,</span></span>
<span class="r-in"><span>    x <span class="op">=</span> <span class="fl">2</span>, y <span class="op">=</span> <span class="fl">15</span>, size <span class="op">=</span> <span class="fl">8</span>, colour <span class="op">=</span> <span class="st">"red"</span></span></span>
<span class="r-in"><span>  <span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Add arrows</span></span></span>
<span class="r-in"><span><span class="va">p</span> <span class="op">+</span></span></span>
<span class="r-in"><span>  <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_point.html" class="external-link">geom_point</a></span><span class="op">(</span>colour <span class="op">=</span> <span class="st">"red"</span><span class="op">)</span> <span class="op">+</span></span></span>
<span class="r-in"><span>  <span class="fu">geom_text_repel</span><span class="op">(</span></span></span>
<span class="r-in"><span>    arrow <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/grid/arrow.html" class="external-link">arrow</a></span><span class="op">(</span>length <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/grid/unit.html" class="external-link">unit</a></span><span class="op">(</span><span class="fl">0.02</span>, <span class="st">"npc"</span><span class="op">)</span><span class="op">)</span>,</span></span>
<span class="r-in"><span>    box.padding <span class="op">=</span> <span class="fl">1</span></span></span>
<span class="r-in"><span>  <span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="op">}</span></span></span>
</code></pre></div>
    </div>
  </main><aside class="col-md-3"><nav id="toc"><h2>On this page</h2>
    </nav></aside></div>


    <footer><div class="pkgdown-footer-left">
  <p></p><p>Developed by <a href="https://slowkow.com" class="external-link">Kamil Slowikowski</a>.</p>
</div>

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

    </footer></div>

  

  

  </body></html>

