knitr generating errors in document but generates figures correctly regardless Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!How to use Cairo PNGs in R MarkdownI get “LaTeX Error: File `figure/minimal-boring-plots1' not found.” running knitr-minimal.lyxUsing knit2pdf with Rmd filesAchieving consistent figure font sizes with knitr, HTML/markdown and PDF/LatexPlot animation in knitr rmarkdownSize of font in ggplot plot changes in relation to plot using knitrrmarkdown error with ggplot and pngSuppress any emission of a particular warning messagePlots not displayed in pdf when rendering Rmarkdown from bash scriptKnitr/Pandoc conversion to PDF fails with “could not find image” errorHow to use Cairo PNGs in R Markdown
Special flights
Asymptotics question
If Windows 7 doesn't support WSL, then what is "Subsystem for UNIX-based Applications"?
Where is the Next Backup Size entry on iOS 12?
Is there hard evidence that the grant peer review system performs significantly better than random?
What is the origin of 落第?
Tannaka duality for semisimple groups
What order were files/directories output in dir?
Does the Mueller report show a conspiracy between Russia and the Trump Campaign?
How can I prevent/balance waiting and turtling as a response to cooldown mechanics
What does 丫 mean? 丫是什么意思?
AppleTVs create a chatty alternate WiFi network
How to ternary Plot3D a function
RSA find public exponent
What are the main differences between the original Stargate SG-1 and the Final Cut edition?
After Sam didn't return home in the end, were he and Al still friends?
Rationale for describing kurtosis as "peakedness"?
Why datecode is SO IMPORTANT to chip manufacturers?
Why is it faster to reheat something than it is to cook it?
Can two people see the same photon?
The test team as an enemy of development? And how can this be avoided?
Co-worker has annoying ringtone
In musical terms, what properties are varied by the human voice to produce different words / syllables?
Why weren't discrete x86 CPUs ever used in game hardware?
knitr generating errors in document but generates figures correctly regardless
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)
Data science time! April 2019 and salary with experience
The Ask Question Wizard is Live!How to use Cairo PNGs in R MarkdownI get “LaTeX Error: File `figure/minimal-boring-plots1' not found.” running knitr-minimal.lyxUsing knit2pdf with Rmd filesAchieving consistent figure font sizes with knitr, HTML/markdown and PDF/LatexPlot animation in knitr rmarkdownSize of font in ggplot plot changes in relation to plot using knitrrmarkdown error with ggplot and pngSuppress any emission of a particular warning messagePlots not displayed in pdf when rendering Rmarkdown from bash scriptKnitr/Pandoc conversion to PDF fails with “could not find image” errorHow to use Cairo PNGs in R Markdown
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I'm knitting an R Markdown file on macOS and I'm using knitr::opts_chunk$set(dev = c("png", "cairo_pdf"))
to save the output of plots as PNG and PDF files simultaneously. I'm also using the Cairo PDF library since it can embed fonts correctly by default (see here)
When I knit and create a plot that uses a custom font, knitr correctly saves both the PNG and PDF files using Cairo:
However, in the actual knitted R Markdown document, R complains about missing fonts and provides dozens of warnings. This is odd, since it is working just fine behind the scenes.
Here's a MWE:
---
title: "So many warnings?"
---
```r setup, include=FALSE
knitr::opts_chunk$set(fig.path = "fig/", # Save images to a subdirectory
echo = FALSE, # Hide code for now
dpi = 300, # High resolution PNGs
# Save all figures as Cairo PDFs and PNGs
dev = c("png", "cairo_pdf"),
dev.args = list(png = list(type = "cairo")))
```
```r load-libraries
library(ggplot2)
```
```r warningless-plot
# This will save two files in the fig/ folder, both saved using Cairo:
# - fig/warningless-plot-1.png
# - fig/warningless-plot-1.pdf
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point()
```
```r warningful-plot
# This will save two files in the fig/ folder, both saved *correctly* using Cairo:
# - fig/warningful-plot-1.png
# - fig/warningful-plot-1.pdf
# However, rmarkdown or knitr or something in the pipeline gets mad and throws
# a ton of warnings.
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
theme_grey(base_family = "Comic Sans MS")
```
The figures themselves are saved correctly, but the HTML output is full of these warnings:
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## font family 'Comic Sans MS' not found in PostScript font database
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## font family 'Comic Sans MS' not found in PostScript font database
Right now my solution is to add warning=FALSE
to the chunk options for warningful-plot
and all other chunks that generate plots with custom fonts. I'd like to know why these extra warnings are happening, though, and if there's a way to avoid getting warnings in the first place.
r r-markdown knitr
add a comment |
I'm knitting an R Markdown file on macOS and I'm using knitr::opts_chunk$set(dev = c("png", "cairo_pdf"))
to save the output of plots as PNG and PDF files simultaneously. I'm also using the Cairo PDF library since it can embed fonts correctly by default (see here)
When I knit and create a plot that uses a custom font, knitr correctly saves both the PNG and PDF files using Cairo:
However, in the actual knitted R Markdown document, R complains about missing fonts and provides dozens of warnings. This is odd, since it is working just fine behind the scenes.
Here's a MWE:
---
title: "So many warnings?"
---
```r setup, include=FALSE
knitr::opts_chunk$set(fig.path = "fig/", # Save images to a subdirectory
echo = FALSE, # Hide code for now
dpi = 300, # High resolution PNGs
# Save all figures as Cairo PDFs and PNGs
dev = c("png", "cairo_pdf"),
dev.args = list(png = list(type = "cairo")))
```
```r load-libraries
library(ggplot2)
```
```r warningless-plot
# This will save two files in the fig/ folder, both saved using Cairo:
# - fig/warningless-plot-1.png
# - fig/warningless-plot-1.pdf
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point()
```
```r warningful-plot
# This will save two files in the fig/ folder, both saved *correctly* using Cairo:
# - fig/warningful-plot-1.png
# - fig/warningful-plot-1.pdf
# However, rmarkdown or knitr or something in the pipeline gets mad and throws
# a ton of warnings.
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
theme_grey(base_family = "Comic Sans MS")
```
The figures themselves are saved correctly, but the HTML output is full of these warnings:
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## font family 'Comic Sans MS' not found in PostScript font database
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## font family 'Comic Sans MS' not found in PostScript font database
Right now my solution is to add warning=FALSE
to the chunk options for warningful-plot
and all other chunks that generate plots with custom fonts. I'd like to know why these extra warnings are happening, though, and if there's a way to avoid getting warnings in the first place.
r r-markdown knitr
It seems that this may be a more widespread issue? github.com/yihui/knitr/issues/729
– Andrew
Mar 8 at 23:21
And another place where it crops up: github.com/hrbrmstr/hrbrthemes/issues/2
– Andrew
Mar 8 at 23:32
add a comment |
I'm knitting an R Markdown file on macOS and I'm using knitr::opts_chunk$set(dev = c("png", "cairo_pdf"))
to save the output of plots as PNG and PDF files simultaneously. I'm also using the Cairo PDF library since it can embed fonts correctly by default (see here)
When I knit and create a plot that uses a custom font, knitr correctly saves both the PNG and PDF files using Cairo:
However, in the actual knitted R Markdown document, R complains about missing fonts and provides dozens of warnings. This is odd, since it is working just fine behind the scenes.
Here's a MWE:
---
title: "So many warnings?"
---
```r setup, include=FALSE
knitr::opts_chunk$set(fig.path = "fig/", # Save images to a subdirectory
echo = FALSE, # Hide code for now
dpi = 300, # High resolution PNGs
# Save all figures as Cairo PDFs and PNGs
dev = c("png", "cairo_pdf"),
dev.args = list(png = list(type = "cairo")))
```
```r load-libraries
library(ggplot2)
```
```r warningless-plot
# This will save two files in the fig/ folder, both saved using Cairo:
# - fig/warningless-plot-1.png
# - fig/warningless-plot-1.pdf
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point()
```
```r warningful-plot
# This will save two files in the fig/ folder, both saved *correctly* using Cairo:
# - fig/warningful-plot-1.png
# - fig/warningful-plot-1.pdf
# However, rmarkdown or knitr or something in the pipeline gets mad and throws
# a ton of warnings.
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
theme_grey(base_family = "Comic Sans MS")
```
The figures themselves are saved correctly, but the HTML output is full of these warnings:
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## font family 'Comic Sans MS' not found in PostScript font database
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## font family 'Comic Sans MS' not found in PostScript font database
Right now my solution is to add warning=FALSE
to the chunk options for warningful-plot
and all other chunks that generate plots with custom fonts. I'd like to know why these extra warnings are happening, though, and if there's a way to avoid getting warnings in the first place.
r r-markdown knitr
I'm knitting an R Markdown file on macOS and I'm using knitr::opts_chunk$set(dev = c("png", "cairo_pdf"))
to save the output of plots as PNG and PDF files simultaneously. I'm also using the Cairo PDF library since it can embed fonts correctly by default (see here)
When I knit and create a plot that uses a custom font, knitr correctly saves both the PNG and PDF files using Cairo:
However, in the actual knitted R Markdown document, R complains about missing fonts and provides dozens of warnings. This is odd, since it is working just fine behind the scenes.
Here's a MWE:
---
title: "So many warnings?"
---
```r setup, include=FALSE
knitr::opts_chunk$set(fig.path = "fig/", # Save images to a subdirectory
echo = FALSE, # Hide code for now
dpi = 300, # High resolution PNGs
# Save all figures as Cairo PDFs and PNGs
dev = c("png", "cairo_pdf"),
dev.args = list(png = list(type = "cairo")))
```
```r load-libraries
library(ggplot2)
```
```r warningless-plot
# This will save two files in the fig/ folder, both saved using Cairo:
# - fig/warningless-plot-1.png
# - fig/warningless-plot-1.pdf
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point()
```
```r warningful-plot
# This will save two files in the fig/ folder, both saved *correctly* using Cairo:
# - fig/warningful-plot-1.png
# - fig/warningful-plot-1.pdf
# However, rmarkdown or knitr or something in the pipeline gets mad and throws
# a ton of warnings.
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
theme_grey(base_family = "Comic Sans MS")
```
The figures themselves are saved correctly, but the HTML output is full of these warnings:
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## font family 'Comic Sans MS' not found in PostScript font database
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## font family 'Comic Sans MS' not found in PostScript font database
Right now my solution is to add warning=FALSE
to the chunk options for warningful-plot
and all other chunks that generate plots with custom fonts. I'd like to know why these extra warnings are happening, though, and if there's a way to avoid getting warnings in the first place.
r r-markdown knitr
r r-markdown knitr
asked Mar 8 at 23:13
AndrewAndrew
13.5k105279
13.5k105279
It seems that this may be a more widespread issue? github.com/yihui/knitr/issues/729
– Andrew
Mar 8 at 23:21
And another place where it crops up: github.com/hrbrmstr/hrbrthemes/issues/2
– Andrew
Mar 8 at 23:32
add a comment |
It seems that this may be a more widespread issue? github.com/yihui/knitr/issues/729
– Andrew
Mar 8 at 23:21
And another place where it crops up: github.com/hrbrmstr/hrbrthemes/issues/2
– Andrew
Mar 8 at 23:32
It seems that this may be a more widespread issue? github.com/yihui/knitr/issues/729
– Andrew
Mar 8 at 23:21
It seems that this may be a more widespread issue? github.com/yihui/knitr/issues/729
– Andrew
Mar 8 at 23:21
And another place where it crops up: github.com/hrbrmstr/hrbrthemes/issues/2
– Andrew
Mar 8 at 23:32
And another place where it crops up: github.com/hrbrmstr/hrbrthemes/issues/2
– Andrew
Mar 8 at 23:32
add a comment |
1 Answer
1
active
oldest
votes
Answering my own question here…
According to a couple issues on GitHub (at knitr and hrbrthemes), this happens because knitr invisibly uses a null PDF device (pdf(NULL)
) in the background when actually knitting. The default pdf()
graphics device in R can't handle custom fonts, though, hence the warnings. Even though none of the visible graphics ever go through the base pdf()
device, they still go through it invisibly I guess.
When knitting using dev = 'png'
, knitr will use an invisible png()
device and no warnings will be thrown. It seems that using a cairo_pdf
device at the same time breaks this and forces knitr to go back to an invisible, custom-font-less pdf()
device.
We can fix this by forcing knitr to use an invisible png()
device instead, based on this comment here:
# Use invisible NULL png() device
options(device = function(file, width, height)
png(tempfile(), width = width, height = height)
)
# knit options, including `dev = c("png", "cairo_pdf")`
knitr::opts_chunk$set(fig.path = "fig/", # Save images to a subdirectory
echo = FALSE, # Hide code for now
dpi = 300, # High resolution PNGs
# Save all figures as Cairo PDFs and PNGs
dev = c("png", "cairo_pdf"),
dev.args = list(png = list(type = "cairo")))
That options(device = ...)
incantation makes the warnings go away.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55072289%2fknitr-generating-errors-in-document-but-generates-figures-correctly-regardless%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Answering my own question here…
According to a couple issues on GitHub (at knitr and hrbrthemes), this happens because knitr invisibly uses a null PDF device (pdf(NULL)
) in the background when actually knitting. The default pdf()
graphics device in R can't handle custom fonts, though, hence the warnings. Even though none of the visible graphics ever go through the base pdf()
device, they still go through it invisibly I guess.
When knitting using dev = 'png'
, knitr will use an invisible png()
device and no warnings will be thrown. It seems that using a cairo_pdf
device at the same time breaks this and forces knitr to go back to an invisible, custom-font-less pdf()
device.
We can fix this by forcing knitr to use an invisible png()
device instead, based on this comment here:
# Use invisible NULL png() device
options(device = function(file, width, height)
png(tempfile(), width = width, height = height)
)
# knit options, including `dev = c("png", "cairo_pdf")`
knitr::opts_chunk$set(fig.path = "fig/", # Save images to a subdirectory
echo = FALSE, # Hide code for now
dpi = 300, # High resolution PNGs
# Save all figures as Cairo PDFs and PNGs
dev = c("png", "cairo_pdf"),
dev.args = list(png = list(type = "cairo")))
That options(device = ...)
incantation makes the warnings go away.
add a comment |
Answering my own question here…
According to a couple issues on GitHub (at knitr and hrbrthemes), this happens because knitr invisibly uses a null PDF device (pdf(NULL)
) in the background when actually knitting. The default pdf()
graphics device in R can't handle custom fonts, though, hence the warnings. Even though none of the visible graphics ever go through the base pdf()
device, they still go through it invisibly I guess.
When knitting using dev = 'png'
, knitr will use an invisible png()
device and no warnings will be thrown. It seems that using a cairo_pdf
device at the same time breaks this and forces knitr to go back to an invisible, custom-font-less pdf()
device.
We can fix this by forcing knitr to use an invisible png()
device instead, based on this comment here:
# Use invisible NULL png() device
options(device = function(file, width, height)
png(tempfile(), width = width, height = height)
)
# knit options, including `dev = c("png", "cairo_pdf")`
knitr::opts_chunk$set(fig.path = "fig/", # Save images to a subdirectory
echo = FALSE, # Hide code for now
dpi = 300, # High resolution PNGs
# Save all figures as Cairo PDFs and PNGs
dev = c("png", "cairo_pdf"),
dev.args = list(png = list(type = "cairo")))
That options(device = ...)
incantation makes the warnings go away.
add a comment |
Answering my own question here…
According to a couple issues on GitHub (at knitr and hrbrthemes), this happens because knitr invisibly uses a null PDF device (pdf(NULL)
) in the background when actually knitting. The default pdf()
graphics device in R can't handle custom fonts, though, hence the warnings. Even though none of the visible graphics ever go through the base pdf()
device, they still go through it invisibly I guess.
When knitting using dev = 'png'
, knitr will use an invisible png()
device and no warnings will be thrown. It seems that using a cairo_pdf
device at the same time breaks this and forces knitr to go back to an invisible, custom-font-less pdf()
device.
We can fix this by forcing knitr to use an invisible png()
device instead, based on this comment here:
# Use invisible NULL png() device
options(device = function(file, width, height)
png(tempfile(), width = width, height = height)
)
# knit options, including `dev = c("png", "cairo_pdf")`
knitr::opts_chunk$set(fig.path = "fig/", # Save images to a subdirectory
echo = FALSE, # Hide code for now
dpi = 300, # High resolution PNGs
# Save all figures as Cairo PDFs and PNGs
dev = c("png", "cairo_pdf"),
dev.args = list(png = list(type = "cairo")))
That options(device = ...)
incantation makes the warnings go away.
Answering my own question here…
According to a couple issues on GitHub (at knitr and hrbrthemes), this happens because knitr invisibly uses a null PDF device (pdf(NULL)
) in the background when actually knitting. The default pdf()
graphics device in R can't handle custom fonts, though, hence the warnings. Even though none of the visible graphics ever go through the base pdf()
device, they still go through it invisibly I guess.
When knitting using dev = 'png'
, knitr will use an invisible png()
device and no warnings will be thrown. It seems that using a cairo_pdf
device at the same time breaks this and forces knitr to go back to an invisible, custom-font-less pdf()
device.
We can fix this by forcing knitr to use an invisible png()
device instead, based on this comment here:
# Use invisible NULL png() device
options(device = function(file, width, height)
png(tempfile(), width = width, height = height)
)
# knit options, including `dev = c("png", "cairo_pdf")`
knitr::opts_chunk$set(fig.path = "fig/", # Save images to a subdirectory
echo = FALSE, # Hide code for now
dpi = 300, # High resolution PNGs
# Save all figures as Cairo PDFs and PNGs
dev = c("png", "cairo_pdf"),
dev.args = list(png = list(type = "cairo")))
That options(device = ...)
incantation makes the warnings go away.
answered Mar 9 at 0:00
AndrewAndrew
13.5k105279
13.5k105279
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55072289%2fknitr-generating-errors-in-document-but-generates-figures-correctly-regardless%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
It seems that this may be a more widespread issue? github.com/yihui/knitr/issues/729
– Andrew
Mar 8 at 23:21
And another place where it crops up: github.com/hrbrmstr/hrbrthemes/issues/2
– Andrew
Mar 8 at 23:32