См. код ниже. У меня ограниченная область в документе, и мне нужно уменьшить ширину. Масштабирование отлично работает для всех элементов (диаграмма, заголовки, текст и т. д.). Но когда я добавляю несколько пользовательских ярлыков, ggsave автоматически обрезает их. По умолчанию аргумент масштабирования установлен на 1.
my_doc <- officer::read_docx()
# Dummy data
data <- data.frame(
day = as.Date("2017-06-14") - 0:364,
value = runif (365) + seq(-140, 224)^2 / 10000)
p <- ggplot(data, aes(x=day, y=value)) +
geom_line() +
xlab("") +
scale_x_date(
date_labels = "%b %Y") +
scale_y_continuous(
position = "right") +
theme(axis.text.x=element_text(angle=30, hjust=1,vjust= 1,
color = 'black'))
p
my_doc <- body_add_gg(my_doc, value = p, width = 2.3, height = 2.8, res = 1200)
my_doc %>% print(target = "doc.docx")
В результате
Я попытался настроить поля и отступы. Никакого успеха.





Думаю, установка plot.margin подойдет:
library(ggplot2)
library(officer)
p <- ggplot(data, aes(x=day, y=value)) +
geom_line() +
xlab("") +
scale_x_date(
date_labels = "%b %Y") +
scale_y_continuous(
position = "right") +
theme(axis.text.x=element_text(angle=30, hjust=1,vjust= 1,
color = 'black'),
plot.margin = unit(c(0, 0, 0, 1), "cm")) ## add this in theme
my_doc <- body_add_gg(my_doc, value = p, width = 2.3, height = 2.8, res = 1200)
my_doc %>% print(target = "doc.docx")
Или используйте параметр scale, чтобы уменьшить масштаб, если вам не подходят размеры элементов графика:
p <- ggplot(data, aes(x=day, y=value)) +
geom_line() +
xlab("") +
scale_x_date(
date_labels = "%b %Y") +
scale_y_continuous(
position = "right") +
theme(axis.text.x=element_text(angle=30, hjust=1,vjust= 1,
color = 'black'))
my_doc <- body_add_gg(my_doc, value = p, width = 2.3, height = 2.8, res = 1200, scale = 0.5) # scale here
my_doc %>% print(target = "doc.docx")