Coder's Logbook

A repository of code snippets, features, and more.


Images

Stacking Images


More than one image can be read in to include_graphics() and the imput can be explicit or vectorized. By adjusting the out.width, knitr will stack the images horizontally (if small enough) or vertically (if large enough).

Horizontally

``{r, echo=T,out.width="49%", fig.cap="",fig.show='hold',fig.align='center', results = 'hide'}
knitr::include_graphics(c("path/to/img1.png","path/to/img2.png"))
``` 

Vertically

``{r, echo=T,out.width="75%", fig.cap="",fig.show='hold',fig.align='center', results = 'hide'}
knitr::include_graphics("path/to/img1.png");
knitr::include_graphics("path/to/img2.png")
``` 

Hide Toolbar in Embedded PDF


Added 2/26/21

When embedding a PDF (in an iframe), add #toolbar=0 to the end of the link to hide the PDF toolbar.

<iframe src="http://dornshuld.chemistry.msstate.edu/files/cv.pdf#toolbar=0" 
width="100%" height="480"></iframe>

This can be processed by knitr for HTML vs. PDF outputs. The below example only embeds the iframe in the HTML output (won’t work for PDF).

if( knitr:::is_html_output() ) {
  cat ('<iframe src="http://dornshuld.chemistry.msstate.edu/files/cv.pdf#toolbar=0" 
       width="100%" height="480"></iframe>')
}


Magick + Knitr


Added 2/25/21

You can crop and scale an image read in from a URL via Knitr using Magick.

Code

library(magick)
crop <- function(im, left = 0, top = 0, right = 0, bottom = 0) {
  d <- dim(im[[1]]); w <- d[2]; h <- d[3]
  image_crop(im, glue::glue("{w-left-right}x{h-top-bottom}+{left}+{top}"))
}
"http://dornshuld.chemistry.msstate.edu/slides/chem2/ch10/table2.png" %>%
  image_read() %>%
  crop(top=10, bottom = 250, left=340) %>%
  image_scale("800")


Before Crop


After Crop

Source

Eric Van Dornshuld
Eric Van Dornshuld
Assistant Clinical Professor

My research interests include ab initio and DFT approaches to characterizing the properties of small, chemical systems.