#r #ggplot2
#r #ggplot2
Вопрос:
Я создал несколько потрясающих графиков, которые хочу экспортировать в свой документ Word. Да, следовало бы написать в Markdown, но… ты знаешь… когда-нибудь!
Однако как мне изменить размеры графиков до нужных размеров, в то время как метки остаются «в пределах» периметра? Смотрите следующие примеры (код приведен в конце документа).
Я хочу вставить следующий график в свой документ Word:
Выглядит великолепно! Не тогда, когда я вставляю его в документ:
Надписи две крошечные, и я бы с удовольствием растянул их вертикально, чтобы ширина была больше высоты. Итак, мне удалось создать это:
И это потому, что я застрял. Как мне сохранить метки в пределах периметра? И есть ли лучший способ «подогнать» документ Word, чем угадать правильные размеры?
Спасибо!
Это и есть код:
library(ggplot2)
df <- mpg # Load sample data
# First test graph
ggplot(data = df, mapping = aes(cyl, hwy))
geom_smooth()
geom_point()
geom_point()
labs(y = "This is just one very long label to prove a point ..... 1234",
x = "Cyl")
theme_classic()
theme(legend.title = element_blank())
ggsave("test1.png")
# Modified test graph to add fit the Word document
ggplot(data = df, mapping = aes(cyl, hwy))
geom_smooth()
geom_point()
geom_point()
labs(y = "This is just one very long label to prove a point ..... 1234",
x = "Cyl")
theme_classic(base_size = 12) # SIZE CHANGED
theme(legend.title = element_blank())
ggsave("test2.png", width = 8, height = 4) # DIMENSIONS DEFINED
Комментарии:
1. Привет, ты видел офицерскую посылку?..
Ответ №1:
Решение, которое я обычно использую, включает officer
пакет, упомянутый выше. Раньше это позволяло экспортировать графики в виде векторных объектов в docx, чтобы вы могли изменять размеры и текст на графике, когда он находится в документе. Похоже, что это было приостановлено в последних версиях, но все еще работает для PowerPoint. Следующий код помещает график в виде сгруппированной фигуры на слайд PowerPoint, где его можно настроить перед копированием в word:
library(ggplot2)
library(officer)
library(tidyverse)
df <- mpg # Load sample data
# First test graph
plot2 <- ggplot(data = df, mapping = aes(cyl, hwy))
geom_smooth()
geom_point()
geom_point()
labs(y = "This is just one very long label to prove a point ..... 1234",
x = "Cyl")
theme_classic(base_size = 12) # SIZE CHANGED
theme(legend.title = element_blank())
pptx <- read_pptx()
pptx %>%
add_slide() %>%
# This first line puts it in as a static png image for comparison
ph_with(plot2, location = ph_location_type(type = "body")) %>%
add_slide() %>%
# This line puts in a shape object, which can be ungrouped and edited
ph_with(rvg::dml(ggobj = plot2),
width = 8,
height = 4,
location = ph_location_type(type = "body"))
#> pptx document with 2 slide(s)
print(pptx, "test_graph.pptx")
Создано 2020-12-08 пакетом reprex (версия 0.3.0)
Это своего рода хитрое решение, которое, по крайней мере, позволяет вам визуально контролировать размеры. Раньше это было проще сделать через export
пакет (доступный на GitHub), но его больше нет в CRAN, и за кулисами использовались ныне несуществующие части officer
для размещения векторной графики в документах docx.
Редактировать: Смотрите Этот выпуск на GitHub для объяснения того, почему перенос векторной графики в docx больше не возможен officer
.