From cee7348ab0763aba6ee039dec400aa2888650e10 Mon Sep 17 00:00:00 2001 From: Daniel Kraus Date: Wed, 14 Jan 2026 11:52:58 +0100 Subject: [PATCH] Add ggplot2 elements to cheat sheet. --- content/cheatsheet.md | 61 +++++++++++++++++++++++++++++++- static/img/ggplot2-elements.png | Bin 0 -> 18974 bytes 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 static/img/ggplot2-elements.png diff --git a/content/cheatsheet.md b/content/cheatsheet.md index 2e4d541..95f3b88 100644 --- a/content/cheatsheet.md +++ b/content/cheatsheet.md @@ -6,12 +6,69 @@ description: > and maybe it is helpful for you, too, internet wanderer. date: 2024-11-05T08:00:00+0100 draft: false +toc: true --- {{< git-info >}} {{< param "description" >}} ## R +## ggplot2 elements + +I can never remember which part of a [ggplot2][] graph/figure is the "plot" +and which is the "panel", so I made this little figure: + +{{< figure src="/img/ggplot2-elements.png" >}} + +The figure was generated with this code: + +```r +library(tidyverse) +tibble(x = 1:3, y = 1:3) |> + ggplot(aes(x = x, y = y)) + + geom_col(fill = "white") + + geom_text( + label = "The green area is the PANEL BACKGROUND", + x = 0.5, + y = 3.5, + hjust = 0, + color = "dark green", + fontface = "bold" + ) + + geom_text( + label = "The blue border at the top and the right is the PLOT BORDER", + x = 0.5, + y = 3.2, + hjust = 0, + color = "navy", + fontface = "bold" + ) + + geom_text( + label = "The gray area is the PLOT BACKGROUND", + x = 0.5, + y = -0.5, + hjust = 0, + color = "black", + fontface = "bold" + ) + + coord_cartesian(clip = "off") + + scale_x_continuous(expand = expansion(), limits = c(0, 4)) + + scale_y_continuous(expand = expansion(), limits = c(0, 4)) + + theme( + panel.border = element_rect(fill = "light blue", color = "blue"), + panel.background = element_rect(fill = "light green", color = "green"), + plot.background = element_rect(fill = "gray", color = "black"), + plot.margin = unit(rep(0.1, 4), units = "npc") + ) +ggsave( + "ggplot2-elements.png", + width = 9, + height = 6, + units = "in", + dpi = 96 +) +``` + ### Print R objects so that they can be re-generated from code ```r @@ -100,4 +157,6 @@ starwars |> ### Human interaction with IMAP servers - \ No newline at end of file + + +[ggplot2]: https://ggplot2.tidyverse.org \ No newline at end of file diff --git a/static/img/ggplot2-elements.png b/static/img/ggplot2-elements.png new file mode 100644 index 0000000000000000000000000000000000000000..997ddceb35ea632e4c72ced910a6331939ad5aca GIT binary patch literal 18974 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 literal 0 HcmV?d00001