Skip to content

noamross/2018-11-06-rladies-talk

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 

Slides from a talk given at the R-Ladies NYC meetup on 2018-11-06.

(Lovely Gustave Doré Engraving from "The Ingenious Hidalgo Don Quixote of La Mancha" - 1863.)

Resources and references

Some code snippets demo'd

Reducing Round-trips: Making an editable Powerpoint Graphic from R with rvg

library(officer)
library(rvg)
library(tidyverse)  # ggplot and pipes

# Make a plot
my_ggplot <-
  ggplot(mtcars, aes(mpg, wt)) +
  geom_point(col = "red", size = 4) +
  labs(x = "Fuel efficiency (mpg)", y = "Weight (tons)",
       title = "Seminal ggplot2 scatterplot example",
       subtitle = "A plot that is only useful for demonstration purposes",
       caption = "Brought to you by the letter 'g'")

# Take a look
my_ggplot

# Draw it using office vector graphics
read_pptx() %>%    # Start with a blank PPT when no arg is given
  add_slide(layout = "Title and Content", master = "Office Theme") %>%
  ph_with_text("Vector graphics, nice.", type = "title") %>%
  ph_with_vg(ggobj = my_ggplot) %>%
  print("my_slide.pptx")

Shortening the journey: Post-processing a knitted word document

library(officer)
library(magrittr)
library(rmarkdown)

# Create a new rmarkdown output format to use
doc_enhanced <- function(...) {
  # Start with an existing format, modify defaults and pass on other args
  out <- rmarkdown::word_document(reference_doc = "template.docx", ...)

  # Add function that will modify the output after the fact
  out$post_processor <- function(metadata, input_file, output_file, clean, verbose) {
    
    
    doc <- read_docx("template.docx") %>%  # Re-use the template
      body_add_docx(output_file) %>%       # Pour the output into it
      body_replace_img_at_bkm(             # Add annotations at bookmarks
        bookmark = "logo",
        value = external_img(src = "sidebar.png", width = 1.77, height = 6.031))
    print(doc, output_file)
    return(output_file)                   # Return the path of the modified file
  }
  return(out)
}

# Now use this format to render
rmarkdown::render("word_doc.Rmd", output_format = doc_enhanced())

Releases

No releases published

Packages

No packages published