hrbrmstr / hrbrthemes

:lock_with_ink_pen: Opinionated, typographic-centric ggplot2 themes and theme components
https://cinc.rud.is/web/packages/hrbrthemes/
Other
1.23k stars 96 forks source link

PDF Output #27

Open leojoubert opened 6 years ago

leojoubert commented 6 years ago

Hi,

I would like to use hrbdthemes with a PDF output Rmarkdown document. Truing this simple example :

---
title: "hrbrthemes testbed"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(hrbrthemes)
library(tidyverse)

Arial Narrow

ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  labs(title="Arial Narrow", subtitle="This is a subtitle") +
  theme_ipsum()

Roboto Condensed

ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  labs(title="Roboto Condensed", subtitle="This is a subtitle") +
  theme_ipsum_rc()


I get the following error : 

`Error in grid.Call.graphics : incorrect font specification.`

How can I fix this ?
hrbrmstr commented 6 years ago

Thx for trying out the pkg and taking the time to file an issue/question!

Can you post the output of sessionInfo()?

hrbrmstr commented 6 years ago

In retrospect, that may not matter.

Please try:

---
title: "hrbrthemes testbed"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r message=FALSE}
library(hrbrthemes)
library(tidyverse)
library(Cairo)

extrafont::loadfonts()
```

### Arial Narrow

```{r dev="cairo_pdf"}
ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  labs(title="Arial Narrow", subtitle="This is a subtitle") +
  theme_ipsum()
```

### Roboto Condensed

```{r dev="cairo_pdf"}
ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  labs(title="Roboto Condensed", subtitle="This is a subtitle") +
  theme_ipsum_rc()
```
hrbrmstr commented 6 years ago

And, I just pushed a change that makes this easier.

Assuming RStudio use,

Will start off a new document with everything above so you don't need to cut/paste from other docs.

hrbrmstr commented 6 years ago

This was a rly helpful question and will likely ease the pain of many others. If you're inclined, would you mind forking the pkg and adding yourself to the DESCRIPTION file as a contributor? I can do it as well if you provide the necessary DESCRIPTION info fields. No worries if not, but this was a good thing to inquire about and cause the addition for.

leojoubert commented 6 years ago

Many thinks for having me as a contributor. I forked the repository and added my coordinate. Sorry btw for mistinking typing my answer, it was quite diffucult to read :)

sahirbhatnagar commented 6 years ago

Any idea how to do this for outputting a single plot to pdf? I tried

Cairo::CairoPDF("plot.pdf")
ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  labs(title="Roboto Condensed", subtitle="This is a subtitle") +
  theme_ipsum_rc()
dev.off()

But I don't get the robo font. plot.pdf

hrbrmstr commented 6 years ago

I usually do:

ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  labs(title="Roboto Condensed", subtitle="This is a subtitle") +
  theme_ipsum_rc() -> gg

ggsave("plot.pdf", gg, device = cairo_pdf)

when targeting PDF

slyrus commented 5 years ago

I have a similar problem trying to use roboto condensed (via theme_ipsum_rc) in an Rmarkdown document -> pdf.

grantmcdermott commented 4 years ago

Just to add a simple solution that worked well for me: Specify cairo_pdf as your dev device for the PDF document. This is especially useful if you plan on exporting to multiple formats and don't want the overhead of switching between (say) PDF and PNG figures for (say) PDF and HTML output.

Example of relevant YAML section:

output: 
  pdf_document:
    dev: cairo_pdf
    <other pdf options>
  html_document:
    <html options>