【R】ggplot2でキレイな図を
2021年2月8日
ggplot Wizardry Hands-Onでキレイな図の書き方が紹介されていたのでやってみた。
データは、ペンギンのデータ。
library(tidyverse) library(systemfonts) library(scico) library(ggforce) penguins <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-07-28/penguins.csv') %>% mutate(species = if_else(species == "Adelie", "Adélie", species)) %>% filter(!is.na(bill_length_mm), !is.na(bill_depth_mm)) png <- magick::image_read("https://raw.githubusercontent.com/allisonhorst/palmerpenguins/master/man/figures/culmen_depth.png") img <- grid::rasterGrob(png, interpolate = TRUE) ggplot(penguins, aes(x = bill_length_mm, y = bill_depth_mm)) + scico::scale_color_scico(palette = "bamako", direction = -1) + coord_cartesian(xlim = c(25, 65), ylim = c(10, 25)) + rcartocolor::scale_fill_carto_d(palette = "Bold") + labs( title = "Bill Dimensions of Brush-Tailed Penguins", subtitle = 'A scatter plot of bill depth versus bill length.', caption = "Data: Gorman, Williams & Fraser (2014) *PLoS ONE*", x = "**Bill Length** (mm)", y = "**Bill Depth** (mm)", color = "Body mass (g)", fill = "Species" ) + ggforce::geom_mark_ellipse( aes(fill = species, label = species), alpha = .15, show.legend = FALSE ) + geom_point(aes(color = body_mass_g), alpha = .6, size = 3.5)+ annotation_custom(img, ymin = 19.5, ymax = 28.5, xmin = 55, xmax = 65.5) + labs(caption = "Data: Gorman, Williams & Fraser (2014) *PLoS ONE* • Illustration: Allison Horst")