<!-- Generated by pkgdown: do not edit by hand --><htmllang="en"><head><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"><metacharset="utf-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>PCA Biplot with ggplot2 — ggplot_pca • AMR (for R)</title><!-- favicons --><linkrel="icon"type="image/png"sizes="16x16"href="../favicon-16x16.png"><linkrel="icon"type="image/png"sizes="32x32"href="../favicon-32x32.png"><linkrel="apple-touch-icon"type="image/png"sizes="180x180"href="../apple-touch-icon.png"><linkrel="apple-touch-icon"type="image/png"sizes="120x120"href="../apple-touch-icon-120x120.png"><linkrel="apple-touch-icon"type="image/png"sizes="76x76"href="../apple-touch-icon-76x76.png"><linkrel="apple-touch-icon"type="image/png"sizes="60x60"href="../apple-touch-icon-60x60.png"><scriptsrc="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><metaname="viewport"content="width=device-width, initial-scale=1, shrink-to-fit=no"><linkhref="../deps/bootstrap-5.3.1/bootstrap.min.css"rel="stylesheet"><scriptsrc="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><linkhref="../deps/Lato-0.4.9/font.css"rel="stylesheet"><linkhref="../deps/Fira_Code-0.4.9/font.css"rel="stylesheet"><linkhref="../deps/font-awesome-6.5.2/css/all.min.css"rel="stylesheet"><linkhref="../deps/font-awesome-6.5.2/css/v4-shims.min.css"rel="stylesheet"><scriptsrc="../deps/headroom-0.11.0/headroom.min.js"></script><scriptsrc="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><scriptsrc="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><scriptsrc="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><scriptsrc="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><scriptsrc="../deps/search-1.0.0/fuse.min.js"></script><scriptsrc="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><scriptsrc="../pkgdown.js"></script><linkhref="../extra.css"rel="stylesheet"><scriptsrc="../extra.js"></script><metaproperty="og:title"content="PCA Biplot with ggplot2 — ggplot_pca"><metaname="description"content="Produces a ggplot2 variant of a so-called biplot for PCA (principal component analysis), but is more flexible and more appealing than the base R biplot() function."><metaproperty="og:description"content="Produces a ggplot2 variant of a so-called biplot for PCA (principal component analysis), but is more flexible and more appealing than the base R biplot() function."><metaproperty="og:image"content="https://msberends.github.io/AMR/logo.svg"></head><body>
<buttonclass="nav-link dropdown-toggle"type="button"id="dropdown-how-to"data-bs-toggle="dropdown"aria-expanded="false"aria-haspopup="true"><spanclass="fa fa-question-circle"></span> How to</button>
<ulclass="dropdown-menu"aria-labelledby="dropdown-how-to"><li><aclass="dropdown-item"href="../articles/AMR.html"><spanclass="fa fa-directions"></span> Conduct AMR Analysis</a></li>
<p>Produces a <code>ggplot2</code> variant of a so-called <ahref="https://en.wikipedia.org/wiki/Biplot"class="external-link">biplot</a> for PCA (principal component analysis), but is more flexible and more appealing than the base <spanstyle="R">R</span><code><ahref="https://rdrr.io/r/stats/biplot.html"class="external-link">biplot()</a></code> function.</p>
<p>The <code>ggplot_pca()</code> function is based on the <code>ggbiplot()</code> function from the <code>ggbiplot</code> package by Vince Vu, as found on GitHub: <ahref="https://github.com/vqv/ggbiplot"class="external-link">https://github.com/vqv/ggbiplot</a> (retrieved: 2 March 2020, their latest commit: <ahref="https://github.com/vqv/ggbiplot/commit/7325e880485bea4c07465a0304c470608fffb5d9"class="external-link"><code>7325e88</code></a>; 12 February 2015).</p>
<p>As per their GPL-2 licence that demands documentation of code changes, the changes made based on the source code were:</p><ol><li><p>Rewritten code to remove the dependency on packages <code>plyr</code>, <code>scales</code> and <code>grid</code></p></li>
<li><p>Parametrised more options, like arrow and ellipse settings</p></li>
<li><p>Hardened all input possibilities by defining the exact type of user input for every argument</p></li>
<li><p>Added total amount of explained variance as a caption in the plot</p></li>
<li><p>Cleaned all syntax based on the <code>lintr</code> package, fixed grammatical errors and added integrity checks</p></li>
<dd><p>an object returned by <code><ahref="pca.html">pca()</a></code>, <code><ahref="https://rdrr.io/r/stats/prcomp.html"class="external-link">prcomp()</a></code> or <code><ahref="https://rdrr.io/r/stats/princomp.html"class="external-link">princomp()</a></code></p></dd>
<dd><p>The variables are scaled by <code>lambda ^ scale</code> and the
observations are scaled by <code>lambda ^ (1-scale)</code> where
<code>lambda</code> are the singular values as computed by
<code><ahref="https://rdrr.io/r/stats/princomp.html"class="external-link">princomp</a></code>. Normally <code>0 <= scale <= 1</code>, and a warning
will be issued if the specified <code>scale</code> is outside this range.</p></dd>
<dd><p>an optional vector of labels for the observations. If set, the labels will be placed below their respective points. When using the <code><ahref="pca.html">pca()</a></code> function as input for <code>x</code>, this will be determined automatically based on the attribute <code>non_numeric_cols</code>, see <code><ahref="pca.html">pca()</a></code>.</p></dd>
<dd><p>an optional vector of groups for the labels, with the same length as <code>labels</code>. If set, the points and labels will be coloured according to these groups. When using the <code><ahref="pca.html">pca()</a></code> function as input for <code>x</code>, this will be determined automatically based on the attribute <code>non_numeric_cols</code>, see <code><ahref="pca.html">pca()</a></code>.</p></dd>
<dd><p>a <ahref="https://rdrr.io/r/base/logical.html"class="external-link">logical</a> to indicate whether a normal data ellipse should be drawn for each group (set with <code>groups</code>)</p></dd>
<dd><p>a <ahref="https://rdrr.io/r/base/logical.html"class="external-link">logical</a> whether the text at the end of the arrows should be angled</p></dd>
<p>The colours for labels and points can be changed by adding another scale layer for colour, such as <code><ahref="https://ggplot2.tidyverse.org/reference/scale_viridis.html"class="external-link">scale_colour_viridis_d()</a></code> and <code><ahref="https://ggplot2.tidyverse.org/reference/scale_brewer.html"class="external-link">scale_colour_brewer()</a></code>.</p>
<divclass="sourceCode"><preclass="sourceCode r"><code><spanclass="r-in"><span><spanclass="co"># `example_isolates` is a data set available in the AMR package.</span></span></span>
<spanclass="r-in"><span><spanclass="co"># See ?example_isolates.</span></span></span>
<spanclass="r-in"><span> order <spanclass="op">=</span><spanclass="fu"><ahref="mo_property.html">mo_order</a></span><spanclass="op">(</span><spanclass="va">mo</span><spanclass="op">)</span>, <spanclass="co"># group on anything, like order</span></span></span>
<spanclass="r-in"><span> genus <spanclass="op">=</span><spanclass="fu"><ahref="mo_property.html">mo_genus</a></span><spanclass="op">(</span><spanclass="va">mo</span><spanclass="op">)</span></span></span>
<spanclass="r-in"><span><spanclass="op">)</span><spanclass="op"><ahref="https://magrittr.tidyverse.org/reference/pipe.html"class="external-link">%>%</a></span><spanclass="co"># and genus as we do here;</span></span></span>
<spanclass="r-in"><span><spanclass="fu"><ahref="https://dplyr.tidyverse.org/reference/filter.html"class="external-link">filter</a></span><spanclass="op">(</span><spanclass="fu"><ahref="https://dplyr.tidyverse.org/reference/context.html"class="external-link">n</a></span><spanclass="op">(</span><spanclass="op">)</span><spanclass="op">>=</span><spanclass="fl">30</span><spanclass="op">)</span><spanclass="op"><ahref="https://magrittr.tidyverse.org/reference/pipe.html"class="external-link">%>%</a></span><spanclass="co"># filter on only 30 results per group</span></span></span>
<spanclass="r-in"><span><spanclass="fu"><ahref="https://dplyr.tidyverse.org/reference/summarise_all.html"class="external-link">summarise_if</a></span><spanclass="op">(</span><spanclass="va">is.sir</span>, <spanclass="va">resistance</span><spanclass="op">)</span><spanclass="co"># then get resistance of all drugs</span></span></span>
<spanclass="r-in"><span><spanclass="fu"><ahref="https://rdrr.io/r/stats/biplot.html"class="external-link">biplot</a></span><spanclass="op">(</span><spanclass="va">pca_result</span>, main <spanclass="op">=</span><spanclass="st">"Base R biplot"</span><spanclass="op">)</span></span></span>
<spanclass="r-wrn co"><spanclass="r-pr">#></span><spanstyle="color: #00BBBB;">ℹ</span> In group 5: `order = "Lactobacillales"` and `genus = "Enterococcus"`.</span>
<spanclass="r-wrn co"><spanclass="r-pr">#></span> Caused by warning:</span>
<spanclass="r-wrn co"><spanclass="r-pr">#></span><spanstyle="color: #BBBB00;">!</span> Introducing NA: only 14 results available for PEN in group: order =</span>
<spanclass="r-wrn co"><spanclass="r-pr">#></span><spanstyle="color: #00BBBB;">ℹ</span> Run `dplyr::last_dplyr_warnings()` to see the 72 remaining warnings.</span>
<p><code>AMR</code> (for R). Free and open-source, licenced under the <atarget="_blank"href="https://github.com/msberends/AMR/blob/main/LICENSE"class="external-link">GNU General Public License version 2.0 (GPL-2)</a>.<br>Developed at the <atarget="_blank"href="https://www.rug.nl"class="external-link">University of Groningen</a> and <atarget="_blank"href="https://www.umcg.nl"class="external-link">University Medical Center Groningen</a> in The Netherlands.</p>