Domanda Raggiungimento di dimensioni di caratteri di figure coerenti con knitr, HTML / markdown e PDF / Latex


Sto cercando di risolvere una differenza notevole nella dimensione del carattere quando si confrontano i grafici generati per a knitr documento. L'output HTML / markdown sembra essere quello che considererei la dimensione corretta mentre l'output PDF / Latex è di circa 2-4 pts più grande (ad esempio, se mi aspettassi 12pt, l'output è più vicino 14 o 16 pts). Nota che il problema sembra essere limitato al testo della trama / figura e non sembra manifestarsi con altro testo nel documento di output.

Il modo più semplice per me di dimostrarlo è con il contenuto predefinito che RStudio (versione 0.99.329) popola quando un nuovo *.Rmd il file è stato creato Un confronto side-by-side è disponibile tramite questo link. Ai miei occhi, la versione HTML è dimensionata correttamente e la versione PDF / Latex non lo è.

Per quanto ne so, non ho impostazioni personalizzate nel mio profilo .Rpr o in altre posizioni che potrebbero avere un impatto su questo problema. Ho provato a disabilitare / abilitare il ritaglio PDF e questo non sembra avere alcun impatto sul problema. Ho duplicato il problema su una macchina di colleghi (anche con OS X e la stessa versione di RStudio).

Al di fuori del rmarkdown quadro (cioè, basta eseguire il codice R) non sembra essere una tale differenza tra l'output PDF e PNG. Ad esempio, il codice seguente produce un output abbastanza simile:

library(ggplot2)
r <- ggplot(data = diamonds, 
    aes(x = carat, y = price, color = cut, group = cut))
r + geom_smooth(size = 2) + 
    ggtitle("Plant growth with\ndifferent treatments")

ggsave(file="test.pdf")
ggsave(file="test.png")

Dato che questo codice sopra produce grafici di output che sono abbastanza simili, sono sospetto che i problemi che sto vedendo siano legati a knitr o al processo di conversione rmarkdown / pandoc.

Quindi, la mia domanda principale è se il livello di differenze che sto vedendo tra i formati di output è previsto? Sono l'unico? È unico per il mio sistema?

Se è previsto un comportamento, in che modo la gente riconcilia il problema? Per i ggplot, ho usato theme_bw(8.5) per ridimensionare i caratteri per l'output PDF / latex. Funziona, ma aggiunge un altro livello di complessità durante la creazione di output per più piattaforme / usi dalla stessa *.Rmd file ... uno dei principali vantaggi di rmarkdown.

Specifiche del mio setup e sistema

  • OS X 10.10.2, MacBook Pro (Retina, 15 pollici, inizio 2013)
  • RStudio Versione 0.99.329
  • R versione 3.1.2 (2014-10-31) - "Pumpkin Helmet"
  • rmarkdown 0.5.1
  • pandoc 1.13.1

13
2018-03-26 01:14


origine


risposte:


Hai provato Questo soluzione, che imposta diversi dispositivi di output per diversi formati di output? Ecco qui:

Soluzione per la produzione di output pdf e html da un file Markdown univoco impostando opzioni specifiche per knitr nel Makefile:

$(PDF): $(SRC) Makefile
Rscript \
  -e "library(knitr)" \
  -e "opts_chunk[['set']](dev = 'pdf')" \
  -e "pat_gfm()" \
  -e "knit('$<', 'temp.md')"
$(PANDOC) temp.md -o $@
rm temp.md

Questo la risposta ha anche idee interessanti.

Ecco qui:

Prova a inserire questo blocco di codice all'inizio del documento Rmd.

```{r setup, cache=FALSE, include=FALSE}
library(knitr)
output <- opts_knit$get("rmarkdown.pandoc.to")
if (output=="html") opts_chunk$set(fig.width=11, fig.height=11)
if (output=="docx") opts_chunk$set(fig.width=6,  fig.height=6)
```

Una delle opzioni del pacchetto restituite da opts_knit $ get () è markdown.pandoc.to. Questo è evidentemente impostato su "html", "docx" o "latex" a seconda del formato di output scelto (HTML, Word o PDF). Quindi puoi testarlo e impostare le opzioni del chunk fig.width e fig.height di conseguenza.


2
2017-09-29 05:48