#r #ggplot2 #r-markdown
#r #ggplot2 #r-уценка
Вопрос:
В R Markdown я создаю отчет, содержащий несколько графиков. Мне нужно добавить «Рис. ##» к заголовку каждого участка, чтобы эти номера были последовательными. На данный момент мой подход заключается в использовании переменной fig
и добавлении к ней 1 после каждого графика.
library(ggplot2);
fig = 1;
ggplot(mtcars)
geom_point(aes(x = cyl,
y = disp))
labs(title = paste0("Fig. ", fig, ". Cyl vs Disp"));
fig = fig 1;
## Some extra code or chunk break
ggplot(iris)
geom_point(aes(x = Sepal.Length,
y = Petal.Length))
labs(title = paste0("Fig. ", fig, ". Sepal vs Petal"));
fig = fig 1;
Моя проблема в том, что я часто забываю добавлять fig = fig 1;
после графика. Есть ли какой-нибудь элегантный способ избежать этого повторяющегося ввода?
ОБНОВЛЕНИЕ: reprex был обновлен, чтобы более четко показать проблему.
Ответ №1:
попробуйте сделать это таким образом
library(tidyverse)
fn_plot <- function(data, x, y, fig){
ggplot(data)
geom_point(aes(x = .data[[x]],
y = .data[[y]]))
labs(title = paste0("Fig. ", fig, " . ", x, " vs ", y))
}
data <- list(mtcars, iris)
x <- c("cyl", "Sepal.Length")
y <- c("disp", "Petal.Length")
fig <- 1:2
l <- list(data, x, y, fig)
pmap(.l = l, .f = fn_plot)
#> [[1]]
#>
#> [[2]]
Создано 2021-03-02 пакетом reprex (версия v1.0.0)
Комментарии:
1. Извините, мой reprex был не очень ясен в том, что я хочу. Я обновил reprex, чтобы лучше показать проблему — я не могу программно генерировать графики, поскольку они сильно отличаются друг от друга.