PascalVKooten
PascalVKooten

Reputation: 21461

Manually use R Knit/Markdown to produce plots for HTML

I am using knit()and markdownToHTML() to automatically generate reports.

The issue is that I am not outputting plots when using these commands. However, when I use RStudio's Knit HTML button, the plots get generated. When I then use my own knit/markdown function, it suddenly outputs the plot. When I switch to another document and knit that one, the old plot appears.

Example:

```{r figA, result='asis', echo=TRUE, dpi=300, out.width="600px", 
              fig=TRUE, fig.align='center', fig.path="figure/"}
plot(1:10)
```

Using commands:

 knit(rmd, md, quiet=TRUE)
 markdownToHTML(md, html, stylesheet=style)

So I guess there are 2 questions, depending on how you want to approach it:

Upvotes: 3

Views: 1177

Answers (2)

PascalVKooten
PascalVKooten

Reputation: 21461

This is really embarrassing, I really thought I read the documentation carefully:

include: (TRUE; logical) whether to include the chunk output in the final output document; if include=FALSE, nothing will be written into the output document, but the code is still evaluated and plot files are generated if there are any plots in the chunk, so you can manually insert figures; note this is the only chunk option that is not cached, i.e., changing it will not invalidate the cache

Simply adding {..., include=TRUE} did the trick. I would say it would be a pretty sensible default though.

Upvotes: 0

Thomas
Thomas

Reputation: 44555

The only issue I see here is that this doesn't work when you have the chunk options {...} spanning two lines. If it's all on one line, it works fine. Am I missing something?

See how this is not allowed under knitr in the documentation:

  1. Chunk options must be written in one line; no line breaks are allowed inside chunk options;

RStudio must handle linebreaks in a non-standard way.

Upvotes: 1

Related Questions