L oop через список графиков и добавить в слайд для презентации Power Point - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть список из примерно 24 графиков, и я хочу создать слайд-шоу с каждым графиком на слайде. Я использую пакет R под названием Officer . На данный момент я могу добавить только один график за раз, как я могу создать функцию с al oop для этого:

library(lubridate)
library(tidyr)
library(dplyr)
library(officer)

# Data
df <- data.frame("Hospital" = c("Buge Hospital", "Buge Hospital", "Greta Hospital", "Greta Hospital",
                                "Makor Hospital", "Makor Hospital"),
                 "Period" = c("Jul-18","Aug-18", "Jul-19","Aug-19", "Jul-20","Aug-20"),
                 "Medical admissions" = c(12,56,0,40,5,56),
                 "Surgical admissions" = c(10,2,0,50,20,56),
                 "Inpatient admissions" = c(9,5,6,0,60,96))


df$ward_totals <- rowSums(df[3:5])

df <- df %>% mutate(Date = ymd(parse_date_time2(as.character(Period), 
                                                  orders = "%b-%y")))

my_plot <- function(df, hospital) {      
  ggplot(df %>% filter(Hospital == hospital), 
         aes(x = Date, y = ward_totals, group = 1)) +
    geom_bar(stat = "identity",fill="steelblue") +
    scale_x_date(date_breaks = "month", date_labels = "%b %Y")+
    geom_text( aes(label= ward_totals), vjust=1.6) +
    ggtitle(hospital)+
    theme(axis.text.x = element_text(angle = 45, hjust = 1))      
}

my_plot(df, "Buge Hospital")


#Loop through Place var, create plots & store them in a list using purrr::map()
plot_list <- unique(df$Hospital) %>% 
  purrr::set_names() %>% 
  purrr::map( ~ my_plot(df, .x))
str(plot_list, max.level = 1)

Теперь вот как я могу ввести одну больницу в слайд-шоу

myppt <- read_pptx()
mylab <- layout_summary(myppt)[[1]] # Slide Layout Name
mytmp <- layout_summary(myppt)[[2]][1] # Show Slide Master Name

myppt <- myppt %>%
  add_slide(layout="Title Slide", master=mytmp) %>%
  ph_with_text(type="ctrTitle", str="Hospital DATA TRENDS") %>%
  ph_with_text(type="subTitle", str="from 2019 to 2020") %>%
  ph_with_text(type="dt", str=format(Sys.Date())) %>%
  add_slide(layout="Title and Content", master=mytmp) %>%
  ph_with_text(type="title", str="Buge Hospital") %>%
  ph_with_gg(value= plot_list[1]) %>%
  add_slide(layout="Two Content", master=mytmp)


print(myppt, target="DHIS2_trends.pptx")

Как IL oop можно просмотреть все графики в списке и добавить отдельные слайды для каждого графика?

...