Пакет Officer r для создания слайдов с параллельным содержимым - содержимое отображается только в одном разделе

Несмотря на все мои усилия, я не могу загрузить какой-либо контент бок о бок в слайдах Powerpoint, созданных с помощью R пакета officer. Что мне нужно, так это контент (изображения или графики и т. Д. Справа и текст слева). Вот мой рабочий процесс:

plot.gg <- ggplot(iris, aes(Sepal.Length, Petal.Width)) + 
   geom_line()

library(officer)
read_pptx()  %>%
  add_slide(layout = "Two Content", master = "Office Theme") %>%
  ph_with("text",  location = ph_location_type(type = "body", index = 4)) %>%
  ph_with(plot.gg, location = ph_location_type(type = "body", index = 3)) %>%
  print(target = "test.pptx") 

Результатом приведенного выше кода является то, что оба фрагмента контента появляются на правом фланге. Я могу получить текст с левой стороны в виде заголовка с ph_with_text(type = "title", index=1, str = "title"), но, несмотря на все мои усилия, в левой части слайда не отображаются подписи или контент.


person Cyrus Mohammadian    schedule 06.03.2020    source источник


Ответы (2)


Вы можете явно указать, что ваш первый вызов ph_with не отображается справа.

read_pptx()  %>%
  add_slide(layout = "Two Content", master = "Office Theme") %>%
  ph_with("text",  location = ph_location_type(type = "body", index = 4, position_right = F)) %>%
  ph_with(plot.gg, location = ph_location_type(type = "body", index = 3)) %>%
  print(target = "test.pptx") 
person caldwellst    schedule 06.03.2020
comment
Параметр index не является частью функции и игнорируется. Я думаю, вы хотите использовать id, но его значения должны быть 1 и 2 - документация этого параметра является индексом заполнителя. Если два заполнителя тела, могут быть два разных индекса: 1 и 2 для первого и второго заполнителей тела, определенных в макете. Если используется этот аргумент, position_right и position_top будут проигнорированы. - person David Gohel; 06.03.2020

Есть два решения:

library(officer)
library(magrittr)
library(ggplot2)
plot.gg <- ggplot(iris, aes(Sepal.Length, Petal.Width)) + 
  geom_line()

# solution 1 : you don't have layout named "Two Content" ---
read_pptx()  %>%
  add_slide(layout = "Two Content", master = "Office Theme") %>%
  ph_with("text",  location = ph_location_type(type = "body", position_right = FALSE)) %>%
  ph_with(plot.gg, location = ph_location_type(type = "body")) %>%
  print(target = "test.pptx") 

# solution 1 : you can rely on a layout named "Two Content" ---
read_pptx()  %>%
  add_slide(layout = "Two Content", master = "Office Theme") %>%
  ph_with("text",  location = ph_location_left()) %>%
  ph_with(plot.gg, location = ph_location_right()) %>%
  print(target = "test.pptx") 

Параметр index не является частью функции и игнорируется. Я думаю, вы хотите использовать id, но его значения должны быть 1 и 2 - документация по этому параметру - это "индекс заполнителя". Если заполнитель два тела, может быть два разных индекса: 1 и 2 для первого и второго заданных заполнителей тела в макете. Если используется этот аргумент, position_right и position_top будут проигнорированы. "

person David Gohel    schedule 06.03.2020