522 lines
244 KiB
HTML
522 lines
244 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
|
|||
|
<html>
|
|||
|
|
|||
|
<head>
|
|||
|
|
|||
|
<meta charset="utf-8" />
|
|||
|
<meta name="generator" content="pandoc" />
|
|||
|
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
|
|||
|
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<title>Introduction to ggplot2</title>
|
|||
|
|
|||
|
<script>// Pandoc 2.9 adds attributes on both header and div. We remove the former (to
|
|||
|
// be compatible with the behavior of Pandoc < 2.8).
|
|||
|
document.addEventListener('DOMContentLoaded', function(e) {
|
|||
|
var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
|
|||
|
var i, h, a;
|
|||
|
for (i = 0; i < hs.length; i++) {
|
|||
|
h = hs[i];
|
|||
|
if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
|
|||
|
a = h.attributes;
|
|||
|
while (a.length > 0) h.removeAttribute(a[0].name);
|
|||
|
}
|
|||
|
});
|
|||
|
</script>
|
|||
|
|
|||
|
<style type="text/css">
|
|||
|
code{white-space: pre-wrap;}
|
|||
|
span.smallcaps{font-variant: small-caps;}
|
|||
|
span.underline{text-decoration: underline;}
|
|||
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
|||
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|||
|
ul.task-list{list-style: none;}
|
|||
|
</style>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<style type="text/css">
|
|||
|
code {
|
|||
|
white-space: pre;
|
|||
|
}
|
|||
|
.sourceCode {
|
|||
|
overflow: visible;
|
|||
|
}
|
|||
|
</style>
|
|||
|
<style type="text/css" data-origin="pandoc">
|
|||
|
pre > code.sourceCode { white-space: pre; position: relative; }
|
|||
|
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
|
|||
|
pre > code.sourceCode > span:empty { height: 1.2em; }
|
|||
|
.sourceCode { overflow: visible; }
|
|||
|
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
|||
|
div.sourceCode { margin: 1em 0; }
|
|||
|
pre.sourceCode { margin: 0; }
|
|||
|
@media screen {
|
|||
|
div.sourceCode { overflow: auto; }
|
|||
|
}
|
|||
|
@media print {
|
|||
|
pre > code.sourceCode { white-space: pre-wrap; }
|
|||
|
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
|||
|
}
|
|||
|
pre.numberSource code
|
|||
|
{ counter-reset: source-line 0; }
|
|||
|
pre.numberSource code > span
|
|||
|
{ position: relative; left: -4em; counter-increment: source-line; }
|
|||
|
pre.numberSource code > span > a:first-child::before
|
|||
|
{ content: counter(source-line);
|
|||
|
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
|||
|
border: none; display: inline-block;
|
|||
|
-webkit-touch-callout: none; -webkit-user-select: none;
|
|||
|
-khtml-user-select: none; -moz-user-select: none;
|
|||
|
-ms-user-select: none; user-select: none;
|
|||
|
padding: 0 4px; width: 4em;
|
|||
|
color: #aaaaaa;
|
|||
|
}
|
|||
|
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
|||
|
div.sourceCode
|
|||
|
{ }
|
|||
|
@media screen {
|
|||
|
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
|||
|
}
|
|||
|
code span.al { color: #ff0000; font-weight: bold; }
|
|||
|
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|||
|
code span.at { color: #7d9029; }
|
|||
|
code span.bn { color: #40a070; }
|
|||
|
code span.bu { color: #008000; }
|
|||
|
code span.cf { color: #007020; font-weight: bold; }
|
|||
|
code span.ch { color: #4070a0; }
|
|||
|
code span.cn { color: #880000; }
|
|||
|
code span.co { color: #60a0b0; font-style: italic; }
|
|||
|
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|||
|
code span.do { color: #ba2121; font-style: italic; }
|
|||
|
code span.dt { color: #902000; }
|
|||
|
code span.dv { color: #40a070; }
|
|||
|
code span.er { color: #ff0000; font-weight: bold; }
|
|||
|
code span.ex { }
|
|||
|
code span.fl { color: #40a070; }
|
|||
|
code span.fu { color: #06287e; }
|
|||
|
code span.im { color: #008000; font-weight: bold; }
|
|||
|
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|||
|
code span.kw { color: #007020; font-weight: bold; }
|
|||
|
code span.op { color: #666666; }
|
|||
|
code span.ot { color: #007020; }
|
|||
|
code span.pp { color: #bc7a00; }
|
|||
|
code span.sc { color: #4070a0; }
|
|||
|
code span.ss { color: #bb6688; }
|
|||
|
code span.st { color: #4070a0; }
|
|||
|
code span.va { color: #19177c; }
|
|||
|
code span.vs { color: #4070a0; }
|
|||
|
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|||
|
</style>
|
|||
|
<script>
|
|||
|
// apply pandoc div.sourceCode style to pre.sourceCode instead
|
|||
|
(function() {
|
|||
|
var sheets = document.styleSheets;
|
|||
|
for (var i = 0; i < sheets.length; i++) {
|
|||
|
if (sheets[i].ownerNode.dataset["origin"] !== "pandoc") continue;
|
|||
|
try { var rules = sheets[i].cssRules; } catch (e) { continue; }
|
|||
|
var j = 0;
|
|||
|
while (j < rules.length) {
|
|||
|
var rule = rules[j];
|
|||
|
// check if there is a div.sourceCode rule
|
|||
|
if (rule.type !== rule.STYLE_RULE || rule.selectorText !== "div.sourceCode") {
|
|||
|
j++;
|
|||
|
continue;
|
|||
|
}
|
|||
|
var style = rule.style.cssText;
|
|||
|
// check if color or background-color is set
|
|||
|
if (rule.style.color === '' && rule.style.backgroundColor === '') {
|
|||
|
j++;
|
|||
|
continue;
|
|||
|
}
|
|||
|
// replace div.sourceCode by a pre.sourceCode rule
|
|||
|
sheets[i].deleteRule(j);
|
|||
|
sheets[i].insertRule('pre.sourceCode{' + style + '}', j);
|
|||
|
}
|
|||
|
}
|
|||
|
})();
|
|||
|
</script>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<style type="text/css">body {
|
|||
|
background-color: #fff;
|
|||
|
margin: 1em auto;
|
|||
|
max-width: 700px;
|
|||
|
overflow: visible;
|
|||
|
padding-left: 2em;
|
|||
|
padding-right: 2em;
|
|||
|
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|||
|
font-size: 14px;
|
|||
|
line-height: 1.35;
|
|||
|
}
|
|||
|
#TOC {
|
|||
|
clear: both;
|
|||
|
margin: 0 0 10px 10px;
|
|||
|
padding: 4px;
|
|||
|
width: 400px;
|
|||
|
border: 1px solid #CCCCCC;
|
|||
|
border-radius: 5px;
|
|||
|
background-color: #f6f6f6;
|
|||
|
font-size: 13px;
|
|||
|
line-height: 1.3;
|
|||
|
}
|
|||
|
#TOC .toctitle {
|
|||
|
font-weight: bold;
|
|||
|
font-size: 15px;
|
|||
|
margin-left: 5px;
|
|||
|
}
|
|||
|
#TOC ul {
|
|||
|
padding-left: 40px;
|
|||
|
margin-left: -1.5em;
|
|||
|
margin-top: 5px;
|
|||
|
margin-bottom: 5px;
|
|||
|
}
|
|||
|
#TOC ul ul {
|
|||
|
margin-left: -2em;
|
|||
|
}
|
|||
|
#TOC li {
|
|||
|
line-height: 16px;
|
|||
|
}
|
|||
|
table {
|
|||
|
margin: 1em auto;
|
|||
|
border-width: 1px;
|
|||
|
border-color: #DDDDDD;
|
|||
|
border-style: outset;
|
|||
|
border-collapse: collapse;
|
|||
|
}
|
|||
|
table th {
|
|||
|
border-width: 2px;
|
|||
|
padding: 5px;
|
|||
|
border-style: inset;
|
|||
|
}
|
|||
|
table td {
|
|||
|
border-width: 1px;
|
|||
|
border-style: inset;
|
|||
|
line-height: 18px;
|
|||
|
padding: 5px 5px;
|
|||
|
}
|
|||
|
table, table th, table td {
|
|||
|
border-left-style: none;
|
|||
|
border-right-style: none;
|
|||
|
}
|
|||
|
table thead, table tr.even {
|
|||
|
background-color: #f7f7f7;
|
|||
|
}
|
|||
|
p {
|
|||
|
margin: 0.5em 0;
|
|||
|
}
|
|||
|
blockquote {
|
|||
|
background-color: #f6f6f6;
|
|||
|
padding: 0.25em 0.75em;
|
|||
|
}
|
|||
|
hr {
|
|||
|
border-style: solid;
|
|||
|
border: none;
|
|||
|
border-top: 1px solid #777;
|
|||
|
margin: 28px 0;
|
|||
|
}
|
|||
|
dl {
|
|||
|
margin-left: 0;
|
|||
|
}
|
|||
|
dl dd {
|
|||
|
margin-bottom: 13px;
|
|||
|
margin-left: 13px;
|
|||
|
}
|
|||
|
dl dt {
|
|||
|
font-weight: bold;
|
|||
|
}
|
|||
|
ul {
|
|||
|
margin-top: 0;
|
|||
|
}
|
|||
|
ul li {
|
|||
|
list-style: circle outside;
|
|||
|
}
|
|||
|
ul ul {
|
|||
|
margin-bottom: 0;
|
|||
|
}
|
|||
|
pre, code {
|
|||
|
background-color: #f7f7f7;
|
|||
|
border-radius: 3px;
|
|||
|
color: #333;
|
|||
|
white-space: pre-wrap;
|
|||
|
}
|
|||
|
pre {
|
|||
|
border-radius: 3px;
|
|||
|
margin: 5px 0px 10px 0px;
|
|||
|
padding: 10px;
|
|||
|
}
|
|||
|
pre:not([class]) {
|
|||
|
background-color: #f7f7f7;
|
|||
|
}
|
|||
|
code {
|
|||
|
font-family: Consolas, Monaco, 'Courier New', monospace;
|
|||
|
font-size: 85%;
|
|||
|
}
|
|||
|
p > code, li > code {
|
|||
|
padding: 2px 0px;
|
|||
|
}
|
|||
|
div.figure {
|
|||
|
text-align: center;
|
|||
|
}
|
|||
|
img {
|
|||
|
background-color: #FFFFFF;
|
|||
|
padding: 2px;
|
|||
|
border: 1px solid #DDDDDD;
|
|||
|
border-radius: 3px;
|
|||
|
border: 1px solid #CCCCCC;
|
|||
|
margin: 0 5px;
|
|||
|
}
|
|||
|
h1 {
|
|||
|
margin-top: 0;
|
|||
|
font-size: 35px;
|
|||
|
line-height: 40px;
|
|||
|
}
|
|||
|
h2 {
|
|||
|
border-bottom: 4px solid #f7f7f7;
|
|||
|
padding-top: 10px;
|
|||
|
padding-bottom: 2px;
|
|||
|
font-size: 145%;
|
|||
|
}
|
|||
|
h3 {
|
|||
|
border-bottom: 2px solid #f7f7f7;
|
|||
|
padding-top: 10px;
|
|||
|
font-size: 120%;
|
|||
|
}
|
|||
|
h4 {
|
|||
|
border-bottom: 1px solid #f7f7f7;
|
|||
|
margin-left: 8px;
|
|||
|
font-size: 105%;
|
|||
|
}
|
|||
|
h5, h6 {
|
|||
|
border-bottom: 1px solid #ccc;
|
|||
|
font-size: 105%;
|
|||
|
}
|
|||
|
a {
|
|||
|
color: #0033dd;
|
|||
|
text-decoration: none;
|
|||
|
}
|
|||
|
a:hover {
|
|||
|
color: #6666ff; }
|
|||
|
a:visited {
|
|||
|
color: #800080; }
|
|||
|
a:visited:hover {
|
|||
|
color: #BB00BB; }
|
|||
|
a[href^="http:"] {
|
|||
|
text-decoration: underline; }
|
|||
|
a[href^="https:"] {
|
|||
|
text-decoration: underline; }
|
|||
|
|
|||
|
code > span.kw { color: #555; font-weight: bold; }
|
|||
|
code > span.dt { color: #902000; }
|
|||
|
code > span.dv { color: #40a070; }
|
|||
|
code > span.bn { color: #d14; }
|
|||
|
code > span.fl { color: #d14; }
|
|||
|
code > span.ch { color: #d14; }
|
|||
|
code > span.st { color: #d14; }
|
|||
|
code > span.co { color: #888888; font-style: italic; }
|
|||
|
code > span.ot { color: #007020; }
|
|||
|
code > span.al { color: #ff0000; font-weight: bold; }
|
|||
|
code > span.fu { color: #900; font-weight: bold; }
|
|||
|
code > span.er { color: #a61717; background-color: #e3d2d2; }
|
|||
|
</style>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</head>
|
|||
|
|
|||
|
<body>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<h1 class="title toc-ignore">Introduction to ggplot2</h1>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<p>ggplot2 is an R package for producing visualizations of data. Unlike
|
|||
|
many graphics packages, ggplot2 uses a conceptual framework based on the
|
|||
|
grammar of graphics. This allows you to ‘speak’ a graph from composable
|
|||
|
elements, instead of being limited to a predefined set of charts.</p>
|
|||
|
<p>More complete information about how to use ggplot2 can be found in
|
|||
|
the <a href="https://ggplot2-book.org/">book</a>, but here you’ll find a
|
|||
|
brief overview of the plot components and some terse examples to build a
|
|||
|
plot like this:</p>
|
|||
|
<p><img src="data:image/png;base64,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
|
|||
|
<p>For structure, we go over the 7 composable parts that come together
|
|||
|
as a set of instructions on how to draw a chart.</p>
|
|||
|
<p><img src="data:image/png;base64,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
|
|||
|
<p>Out of these components, ggplot2 needs at least the following three
|
|||
|
to produce a chart: data, a mapping, and a layer. The scales, facets,
|
|||
|
coordinates, and themes have sensible defaults that take away a lot of
|
|||
|
finicky work.</p>
|
|||
|
<div id="data" class="section level2">
|
|||
|
<h2>Data</h2>
|
|||
|
<p>As the foundation of every graphic, ggplot2 uses <a href="https://ggplot2-book.org/getting-started.html#fuel-economy-data">data</a>
|
|||
|
to construct a plot. The system works best if the data is provided in a
|
|||
|
<a href="https://tidyr.tidyverse.org/articles/tidy-data.html">tidy</a>
|
|||
|
format, which briefly means a rectangular data frame structure where
|
|||
|
rows are observations and columns are variables.</p>
|
|||
|
<p>As the first step in many plots, you would pass the data to the
|
|||
|
<code>ggplot()</code> function, which stores the data to be used later
|
|||
|
by other parts of the plotting system. For example, if we intend to make
|
|||
|
a graphic about the <code>mpg</code> dataset, we would start as
|
|||
|
follows:</p>
|
|||
|
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" tabindex="-1"></a><span class="fu">ggplot</span>(<span class="at">data =</span> mpg)</span></code></pre></div>
|
|||
|
</div>
|
|||
|
<div id="mapping" class="section level2">
|
|||
|
<h2>Mapping</h2>
|
|||
|
<p>The <a href="https://ggplot2-book.org/getting-started.html#aesthetics">mapping</a>
|
|||
|
of a plot is a set of instructions on how parts of the data are mapped
|
|||
|
onto aesthetic attributes of geometric objects. It is the ‘dictionary’
|
|||
|
to translate tidy data to the graphics system.</p>
|
|||
|
<p>A mapping can be made by using the <code>aes()</code> function to
|
|||
|
make pairs of graphical attributes and parts of the data. If we want the
|
|||
|
<code>cty</code> and <code>hwy</code> columns to map to the x- and
|
|||
|
y-coordinates in the plot, we can do that as follows:</p>
|
|||
|
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb2-1"><a href="#cb2-1" tabindex="-1"></a><span class="fu">ggplot</span>(mpg, <span class="at">mapping =</span> <span class="fu">aes</span>(<span class="at">x =</span> cty, <span class="at">y =</span> hwy))</span></code></pre></div>
|
|||
|
</div>
|
|||
|
<div id="layers" class="section level2">
|
|||
|
<h2>Layers</h2>
|
|||
|
<p>The heart of any graphic is the <a href="https://ggplot2-book.org/toolbox.html">layers</a>. They take the
|
|||
|
mapped data and display it in something humans can understand as a
|
|||
|
representation of the data. Every layer consists of three important
|
|||
|
parts:</p>
|
|||
|
<ol style="list-style-type: decimal">
|
|||
|
<li>The <a href="https://ggplot2-book.org/individual-geoms.html"><strong>geometry</strong></a>
|
|||
|
that determines <em>how</em> data are displayed, such as points, lines,
|
|||
|
or rectangles.</li>
|
|||
|
<li>The <a href="https://ggplot2-book.org/statistical-summaries.html"><strong>statistical
|
|||
|
transformation</strong></a> that may compute new variables from the data
|
|||
|
and affect <em>what</em> of the data is displayed.</li>
|
|||
|
<li>The <a href="https://ggplot2-book.org/layers.html#position"><strong>position
|
|||
|
adjustment</strong></a> that primarily determines <em>where</em> a piece
|
|||
|
of data is being displayed.</li>
|
|||
|
</ol>
|
|||
|
<p>A layer can be constructed using the <code>geom_*()</code> and
|
|||
|
<code>stat_*()</code> functions. These functions often determine one of
|
|||
|
the three parts of a layer, while the other two can still be specified.
|
|||
|
Here is how we can use two layers to display the <code>cty</code> and
|
|||
|
<code>hwy</code> columns of the <code>mpg</code> dataset as points and
|
|||
|
stack a trend line on top.</p>
|
|||
|
<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" tabindex="-1"></a><span class="fu">ggplot</span>(mpg, <span class="fu">aes</span>(cty, hwy)) <span class="sc">+</span></span>
|
|||
|
<span id="cb3-2"><a href="#cb3-2" tabindex="-1"></a> <span class="co"># to create a scatterplot</span></span>
|
|||
|
<span id="cb3-3"><a href="#cb3-3" tabindex="-1"></a> <span class="fu">geom_point</span>() <span class="sc">+</span></span>
|
|||
|
<span id="cb3-4"><a href="#cb3-4" tabindex="-1"></a> <span class="co"># to fit and overlay a loess trendline</span></span>
|
|||
|
<span id="cb3-5"><a href="#cb3-5" tabindex="-1"></a> <span class="fu">geom_smooth</span>(<span class="at">formula =</span> y <span class="sc">~</span> x, <span class="at">method =</span> <span class="st">"lm"</span>)</span></code></pre></div>
|
|||
|
<p><img src="data:image/png;base64,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
|
|||
|
</div>
|
|||
|
<div id="scales" class="section level2">
|
|||
|
<h2>Scales</h2>
|
|||
|
<p><a href="https://ggplot2-book.org/scales-guides.html">Scales</a> are
|
|||
|
important for translating what is shown on the graph back to an
|
|||
|
understanding of the data. The scales typically form pairs with
|
|||
|
aesthetic attributes of the plots, and are represented in plots by
|
|||
|
guides, like axes or legends. Scales are responsible for updating the
|
|||
|
limits of a plot, setting the breaks, formatting the labels, and
|
|||
|
possibly applying a transformation.</p>
|
|||
|
<p>To use scales, one can use one of the scale functions that are
|
|||
|
patterned as <code>scale_{aesthetic}_{type}()</code> functions, where
|
|||
|
<code>{aesthetic}</code> is one of the pairings made in the mapping part
|
|||
|
of a plot. To map the <code>class</code> column in the <code>mpg</code>
|
|||
|
dataset to the viridis colour palette, we can write the following:</p>
|
|||
|
<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb4-1"><a href="#cb4-1" tabindex="-1"></a><span class="fu">ggplot</span>(mpg, <span class="fu">aes</span>(cty, hwy, <span class="at">colour =</span> class)) <span class="sc">+</span></span>
|
|||
|
<span id="cb4-2"><a href="#cb4-2" tabindex="-1"></a> <span class="fu">geom_point</span>() <span class="sc">+</span></span>
|
|||
|
<span id="cb4-3"><a href="#cb4-3" tabindex="-1"></a> <span class="fu">scale_colour_viridis_d</span>()</span></code></pre></div>
|
|||
|
<p><img src="data:image/png;base64,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
|
|||
|
</div>
|
|||
|
<div id="facets" class="section level2">
|
|||
|
<h2>Facets</h2>
|
|||
|
<p><a href="https://ggplot2-book.org/facet.html">Facets</a> can be used
|
|||
|
to separate small multiples, or different subsets of the data. It is a
|
|||
|
powerful tool to quickly split up the data into smaller panels, based on
|
|||
|
one or more variables, to display patterns or trends (or the lack
|
|||
|
thereof) within the subsets.</p>
|
|||
|
<p>The facets have their own mapping that can be given as a formula. To
|
|||
|
plot subsets of the <code>mpg</code> dataset based on levels of the
|
|||
|
<code>drv</code> and <code>year</code> variables, we can use
|
|||
|
<code>facet_grid()</code> as follows:</p>
|
|||
|
<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb5-1"><a href="#cb5-1" tabindex="-1"></a><span class="fu">ggplot</span>(mpg, <span class="fu">aes</span>(cty, hwy)) <span class="sc">+</span></span>
|
|||
|
<span id="cb5-2"><a href="#cb5-2" tabindex="-1"></a> <span class="fu">geom_point</span>() <span class="sc">+</span></span>
|
|||
|
<span id="cb5-3"><a href="#cb5-3" tabindex="-1"></a> <span class="fu">facet_grid</span>(year <span class="sc">~</span> drv)</span></code></pre></div>
|
|||
|
<p><img src="data:image/png;base64,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
|
|||
|
</div>
|
|||
|
<div id="coordinates" class="section level2">
|
|||
|
<h2>Coordinates</h2>
|
|||
|
<p>You can view the <a href="https://ggplot2-book.org/coord.html">coordinates</a> part of the
|
|||
|
plot as an interpreter of position aesthetics. While typically Cartesian
|
|||
|
coordinates are used, the coordinate system powers the display of <a href="https://ggplot2-book.org/maps.html">map</a> projections and <a href="https://ggplot2-book.org/coord.html#polar-coordinates-with-coord_polar">polar</a>
|
|||
|
plots.</p>
|
|||
|
<p>We can also use coordinates to display a plot with a fixed aspect
|
|||
|
ratio so that one unit has the same length in both the x and y
|
|||
|
directions. The <code>coord_fixed()</code> function sets this ratio
|
|||
|
automatically.</p>
|
|||
|
<div class="sourceCode" id="cb6"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb6-1"><a href="#cb6-1" tabindex="-1"></a><span class="fu">ggplot</span>(mpg, <span class="fu">aes</span>(cty, hwy)) <span class="sc">+</span></span>
|
|||
|
<span id="cb6-2"><a href="#cb6-2" tabindex="-1"></a> <span class="fu">geom_point</span>() <span class="sc">+</span></span>
|
|||
|
<span id="cb6-3"><a href="#cb6-3" tabindex="-1"></a> <span class="fu">coord_fixed</span>()</span></code></pre></div>
|
|||
|
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAAEgCAYAAAAUg66AAAAEDmlDQ1BrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQgAAOI2NVV1oHFUUPpu5syskzoPUpqaSDv41lLRsUtGE2uj+ZbNt3CyTbLRBkMns3Z1pJjPj/KRpKT4UQRDBqOCT4P9bwSchaqvtiy2itFCiBIMo+ND6R6HSFwnruTOzu5O4a73L3PnmnO9+595z7t4LkLgsW5beJQIsGq4t5dPis8fmxMQ6dMF90A190C0rjpUqlSYBG+PCv9rt7yDG3tf2t/f/Z+uuUEcBiN2F2Kw4yiLiZQD+FcWyXYAEQfvICddi+AnEO2ycIOISw7UAVxieD/Cyz5mRMohfRSwoqoz+xNuIB+cj9loEB3Pw2448NaitKSLLRck2q5pOI9O9g/t/tkXda8Tbg0+PszB9FN8DuPaXKnKW4YcQn1Xk3HSIry5ps8UQ/2W5aQnxIwBdu7yFcgrxPsRjVXu8HOh0qao30cArp9SZZxDfg3h1wTzKxu5E/LUxX5wKdX5SnAzmDx4A4OIqLbB69yMesE1pKojLjVdoNsfyiPi45hZmAn3uLWdpOtfQOaVmikEs7ovj8hFWpz7EV6mel0L9Xy23FMYlPYZenAx0yDB1/PX6dledmQjikjkXCxqMJS9WtfFCyH9XtSekEF+2dH+P4tzITduTygGfv58a5VCTH5PtXD7EFZiNyUDBhHnsFTBgE0SQIA9pfFtgo6cKGuhooeilaKH41eDs38Ip+f4At1Rq/sjr6NEwQqb/I/DQqsLvaFUjvAx+eWirddAJZnAj1DFJL0mSg/gcIpPkMBkhoyCSJ8lTZIxk0TpKDjXHliJzZPO50dR5ASNSnzeLvIvod0HG/mdkmOC0z8VKnzcQ2M/Yz2vKldduXjp9bleLu0ZWn7vWc+l0JGcaai10yNrUnXLP/8Jf59ewX+c3Wgz+B34Df+vbVrc16zTMVgp9um9bxEfzPU5kPqUtVWxhs6OiWTVW+gIfywB9uXi7CGcGW/zk98k/kmvJ95IfJn/j3uQ+4c5zn3Kfcd+AyF3gLnJfcl9xH3OfR2rUee80a+6vo7EK5mmXUdyfQlrYLTwoZIU9wsPCZEtP6BWGhAlhL3p2N6sTjRdduwbHsG9kq32sgBepc+xurLPW4T9URpYGJ3ym4+8zA05u44QjST8ZIoVtu3qE7fWmdn5LPdqvgcZz8Ww8BWJ8X3w0PhQ/wnCDGd+LvlHs8dRy6bLLDuKMaZ20tZrqisPJ5ONiCq8yKhYM5cCgKOu66Lsc0aYOtZdo5QCwezI4wm9J/v0X23mlZXOfBjj8Jzv3WrY5D+CsA9D7aMs2gGfjve8ArD6mePZSeCfEYt8CONWDw8FXTxrPqx/r9Vt4biXeANh8vV7/+/16ffMD1N8AuKD/A/8leAvFY9bLAAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAAEgoAMABAAAAAEAAAEgAAAAAKtAJY0AADqVSURBVHgB7Z0J/BXj/sefLIWkTSWisiUtlpQoxEWUEG0IRbr9S5uSXfciUfbKvpQWKikiiUt1K11JIbImlFRKtKi4fv/zftznmDO/mfM7v5k5M3PO7/t9vX6/c2aeeZb5PHO+8zzftVRBgpSQICAICAIRILBLBH1Kl4KAICAIaASEAcmDIAgIApEhIAwoMuilY0FAEBAGJM+AICAIRIaAMKDIoJeOBQFBQBiQPAOCgCAQGQK7RdZzjDretm2b2r59u6cR7b777qpUqVJq586dnupTaZdddtFt/Pe///XcRunSpRUWFb/99pvnNnbddVfdxh9//OG5jTJlyiju4/fff/fcxm677abb8GMhsscee+gx+BkHc+sHTwBgHLThd279PF9mHLSRbm4rVarkec68VhQGlECOh3THjh2eMNxzzz0VP9zNmzd7qk8lHlLI6xioW7ZsWf1wbdmyhUNPtNdee+kfip+HfZ999tH3sXXrVk9joBLMFCz8MI8KFSooxuAHU+aFl1O6H21RN8mPetOmTb7Gwbz4eb54wTEOXrJ+8CjqXr2UyxbMC2pSRxAQBAJBQBhQIDBKI4KAIOAFgVLiiqEU2xbkDl4oKBkQfftZ6jMOyI/MIggZENsn7sPP9ikIGRCyKMbgR/YSFxlQUOMoSgZkRAH6QQrpn7dfXUiDC6sbfjA//fSTp+6QNfDD9VqfTpl4BNm//vqrpzFQiT0+94G8wSsha+BH60cGVKVKFS1n+OWXX7wOQ5UrV05j4YeJVatWTcs8/MjEypcvr2Uvfl4M1atX17IoP3NbsWJFX88XMiCeMbBIJwNirGGTbMHCRlz6EwQEgSQCwoCSUMgXQUAQCBsBYUBhIy79CQIeEbjvvvvU0UcfrQ4//HA1YMAAbbNVVFNr1qxRbdq0UZhHHHTQQWr58uVFVQm1XGRAocItnQkC3hAYOHCgmjJlSlKGM3XqVG3AOnz4cNcGsWFq1KiRli8ao86WLVuqWbNmqSOOOMK1XpgFsgIKE23pSxDwgAAGlRMmTEgyH5rAqPDFF19UGzZscG1xzJgxCm2gYT5ciGD/3nvvda0TdoEwoLARl/4EgWIigCmBm4o8nQsRmjcnTaIfzWAxh17k5cKAioRILhAEokUA+U3Dhg31Vso6EhjMAQccYD2V8v3MM890tIPq2LFjynVRHggDihJ96VsQyBCBsWPH6q0UNlLYfCGI/uSTT9LWrl+/vho1apS+Zt9991V777236tOnjzr//PPT1guzUITQYaItfQkCHhGA8axatUotW7ZMr2oaNGiQkfV+27ZtVfPmzbUhI47TBx54oMcRZKeaMKDs4CqtCgKBI4BFM1ux4hJW4dTbuHFjiiC7uO1k43rZgmUDVWlTEBAEMkJAGFBGMMlFgoAgkA0EhAFlA1VpUxAQBDJCQBhQRjDJRYKAIJANBIQBZQNVaVMQEAQyQkAYUEYwyUWCgCCQDQSEAWUDVWlTEBAEMkJAGFBGMMlFgoAgkA0EhAFlA1VpUxAQBDJCQBhQRjDJRYKAIJANBIQBZQNVaVMQEAQyQkAYUEYwyUWCgCCQDQTEGTUbqEqbJQaBRYsWqcmTJ+uAYb169VI4fgpljoAwoMyxkisFgRQEnn/+eXXNNdfoc3iqP/nkk+r1119XhMoQygwB2YJlhpNcJQikIEAsZsN8KDDJC3v06JFynRykR0AYUHp8pFQQcETghx9+0JEJ7YWcF8ocAWFAmWMlVwoCSQT2228/x4DvTkHgk5XkSyEEhAEVgkROCAJFI1C5cmU1ZMiQ5IXIgEiBgwxIKHME8kII/dlnn+k7rlOnTvLOf/zxR7V48WJVq1YtZT2fvEC+CAI+Ebjwwgv18zVp0iStBbviiitUzZo1fbZasqrnPAPatGmTGjRokCL4tmE0S5YsUbfeeqsiLcnDDz+sunTpostL1tTK3YaBAJlH+RPyhkDOM6Bhw4YVEgY+8MAD6o477lBHHXWU6tChg+rWrZtq3bq1Kl26tDeUpJYgIAhkBYGcZkDTp09XFStWVDVq1EiCgxCQ9CUmewCGYXvttZdavXq1ql27tr6O7ACvvvpqsg55ssmz5IV23XVXnaObPrzS7rvvrquWKlXKaxMqiHHAoHfbbbeM0r24DZR7oA2/eJBO2Ki23fpKd55xgKufcXAfpLKxpjZO16dbGbj6nVs/92H6RkbFcxInylkGBJMhNzZbrGeeeSaJ6bp161TZsmVTJrx8+fI6JYlhQGvXrtUrJFOpX79+6rjjjjOHnj7JXumXeNj9UhDj8DsGfnB+V5t+63MP/OD480Pm5eCnDebV79wGMa9+mJif+09XNycZEKscNBADBw4sNLFweHJpW4nrrbm169atq4zgmut++eUX5dV+o0KFCvqtgmGaV2JsvKVIteuVyJbJigGZmFfiAQWrnTt3em1CValSReeeAlOvRBI+t7zmmbbJynfr1q3KTx50XlybN2/2tRKrXr26+vnnn33NLav8n376KdNbL3QdGjrwoI0d
|
|||
|
</div>
|
|||
|
<div id="theme" class="section level2">
|
|||
|
<h2>Theme</h2>
|
|||
|
<p>The <a href="https://ggplot2-book.org/themes">theme</a> system
|
|||
|
controls almost any visuals of the plot that are not controlled by the
|
|||
|
data and is therefore important for the look and feel of the plot. You
|
|||
|
can use the theme for customizations ranging from changing the location
|
|||
|
of the legends to setting the background color of the plot. Many
|
|||
|
elements in the theme are hierarchical in that setting the look of the
|
|||
|
general axis line affects those of the x and y axes simultaneously.</p>
|
|||
|
<p>To tweak the look of the plot, one can use many of the built-in
|
|||
|
<code>theme_*()</code> functions and/or detail specific aspects with the
|
|||
|
<code>theme()</code> function. The <code>element_*()</code> functions
|
|||
|
control the graphical attributes of theme components.</p>
|
|||
|
<div class="sourceCode" id="cb7"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb7-1"><a href="#cb7-1" tabindex="-1"></a><span class="fu">ggplot</span>(mpg, <span class="fu">aes</span>(cty, hwy, <span class="at">colour =</span> class)) <span class="sc">+</span></span>
|
|||
|
<span id="cb7-2"><a href="#cb7-2" tabindex="-1"></a> <span class="fu">geom_point</span>() <span class="sc">+</span></span>
|
|||
|
<span id="cb7-3"><a href="#cb7-3" tabindex="-1"></a> <span class="fu">theme_minimal</span>() <span class="sc">+</span></span>
|
|||
|
<span id="cb7-4"><a href="#cb7-4" tabindex="-1"></a> <span class="fu">theme</span>(</span>
|
|||
|
<span id="cb7-5"><a href="#cb7-5" tabindex="-1"></a> <span class="at">legend.position =</span> <span class="st">"top"</span>,</span>
|
|||
|
<span id="cb7-6"><a href="#cb7-6" tabindex="-1"></a> <span class="at">axis.line =</span> <span class="fu">element_line</span>(<span class="at">linewidth =</span> <span class="fl">0.75</span>),</span>
|
|||
|
<span id="cb7-7"><a href="#cb7-7" tabindex="-1"></a> <span class="at">axis.line.x.bottom =</span> <span class="fu">element_line</span>(<span class="at">colour =</span> <span class="st">"blue"</span>)</span>
|
|||
|
<span id="cb7-8"><a href="#cb7-8" tabindex="-1"></a> )</span></code></pre></div>
|
|||
|
<p><img src="data:image/png;base64,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
|
|||
|
</div>
|
|||
|
<div id="combining" class="section level2">
|
|||
|
<h2>Combining</h2>
|
|||
|
<p>As mentioned at the start, you can layer all of the pieces to build a
|
|||
|
customized plot of your data, like the one shown at the beginning of
|
|||
|
this vignette:</p>
|
|||
|
<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb8-1"><a href="#cb8-1" tabindex="-1"></a><span class="fu">ggplot</span>(mpg, <span class="fu">aes</span>(cty, hwy)) <span class="sc">+</span></span>
|
|||
|
<span id="cb8-2"><a href="#cb8-2" tabindex="-1"></a> <span class="fu">geom_point</span>(<span class="at">mapping =</span> <span class="fu">aes</span>(<span class="at">colour =</span> displ)) <span class="sc">+</span></span>
|
|||
|
<span id="cb8-3"><a href="#cb8-3" tabindex="-1"></a> <span class="fu">geom_smooth</span>(<span class="at">formula =</span> y <span class="sc">~</span> x, <span class="at">method =</span> <span class="st">"lm"</span>) <span class="sc">+</span></span>
|
|||
|
<span id="cb8-4"><a href="#cb8-4" tabindex="-1"></a> <span class="fu">scale_colour_viridis_c</span>() <span class="sc">+</span></span>
|
|||
|
<span id="cb8-5"><a href="#cb8-5" tabindex="-1"></a> <span class="fu">facet_grid</span>(year <span class="sc">~</span> drv) <span class="sc">+</span></span>
|
|||
|
<span id="cb8-6"><a href="#cb8-6" tabindex="-1"></a> <span class="fu">coord_fixed</span>() <span class="sc">+</span></span>
|
|||
|
<span id="cb8-7"><a href="#cb8-7" tabindex="-1"></a> <span class="fu">theme_minimal</span>() <span class="sc">+</span></span>
|
|||
|
<span id="cb8-8"><a href="#cb8-8" tabindex="-1"></a> <span class="fu">theme</span>(<span class="at">panel.grid.minor =</span> <span class="fu">element_blank</span>())</span></code></pre></div>
|
|||
|
<p><img src="data:image/png;base64,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
|
|||
|
<p>If you want to learn more, be sure to take a look at the <a href="https://ggplot2-book.org/">ggplot2 book</a>.</p>
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- code folding -->
|
|||
|
|
|||
|
|
|||
|
<!-- dynamically load mathjax for compatibility with self-contained -->
|
|||
|
<script>
|
|||
|
(function () {
|
|||
|
var script = document.createElement("script");
|
|||
|
script.type = "text/javascript";
|
|||
|
script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
|
|||
|
document.getElementsByTagName("head")[0].appendChild(script);
|
|||
|
})();
|
|||
|
</script>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|