2015-03-26 7 views
12

Ich versuche, eine spürbare Unterschied in der Schriftgröße zu beheben, beim Vergleich von Plots für ein knitr Dokument generiert. HTML/Markdown-Ausgabe scheint zu sein, was ich als die richtige Größe betrachten würde, während die PDF/Latex-Ausgabe etwa 2-4 Punkte größer ist (z. B. wenn ich 12pt erwartete, ist die Ausgabe näher 14 oder 16 Punkte). Beachten Sie, dass das Problem anscheinend auf den Plot-/Figurentext beschränkt ist und sich nicht mit anderem Text im Ausgabedokument manifestiert.Erzielen konsistent Abbildung Schriftgrößen mit Knitr, HTML/Markdown und PDF/Latex

Der einfachste Weg für mich, dies zu demonstrieren, ist mit dem Standardinhalt, dass RStudio (Version 0.99.329) auffüllt, wenn eine neue *.Rmd Datei erstellt wird. Ein direkter Vergleich ist über this link möglich. Für mich ist die HTML-Version richtig dimensioniert und die PDF/Latex-Version nicht.

Soweit ich weiß, habe ich keine benutzerdefinierten Einstellungen in meinem .Rprofile oder anderen Speicherorten, die dieses Problem beeinträchtigen könnten. Ich habe versucht, pdf crop zu deaktivieren/aktivieren und das scheint das Problem auch nicht zu beeinflussen. Ich habe das Problem auf einem Kollegencomputer dupliziert (der auch OS X und die gleiche Version von RStudio ausführt).

Außerhalb der -Framework (d. H. Nur R-Code läuft) scheint nicht so ein Unterschied zwischen PDF-und PNG-Ausgabe. Beispielsweise erzeugt der folgende Code ausgegeben, die ziemlich ähnlich ist:

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") 

Da dieser Code über Ausgabe Plots erzeugt, die ziemlich ähnlich sind, ich bin misstrauisch die Fragen, die ich sind im Zusammenhang zu sehen bin knitr oder die rmarkdown/Pandoc Konvertierungsprozess.

Also meine Hauptfrage ist, ob das Niveau der Unterschiede, die ich zwischen den Ausgabeformaten sehe, erwartet wird? Bin ich der Einzige? Ist es einzigartig in meinem System?

Wenn es erwartet Verhalten ist, wie Leute das Problem versöhnen? Für ggplots verwende ich theme_bw(8.5), um die Schriftarten für PDF/Latex-Ausgabe zu verkleinern. Dies funktioniert, aber es fügt eine weitere Stufe der Komplexität hinzu, wenn die Ausgabe für mehrere Plattformen/Anwendungen aus derselben *.Rmd Datei erstellt wird ... einer der Hauptvorteile von .

Spezifikationen von meinem Setup und System

  • OS X 10.10.2, MacBook Pro (Retina, 15 Zoll, Anfang 2013)
  • RStudio Version 0.99.329
  • R Version 3.1.2 (2014.10.31) - "Kürbis-Helm"
  • rmarkdown 0.5.1
  • pandoc 1.13.1
+0

Ich habe das gleiche Problem. Ich denke, es hat etwas mit den verschiedenen Standard-Grafikgeräten für PDF- und HTML-Dateien zu tun ('dev: (' pdf 'für LaTeX-Ausgabe und' png 'für HTML/Abschrift; Zeichen)', http://yihui.name/knitr/Optionen /). Wenn ich 'dev = pdf' für html-Dateien manuell einstelle, kann es nicht mehr angezeigt werden, aber die generierte Datei zeigt die gleiche Schriftgröße wie bei der PDF-Generierung. Wenn ich 'dev = 'png' für PDF-Dateien manuell setze, bekomme ich das' error: unused Argument (pdf = list (useDingbats = FALSE) '), welches etwas mit dem' dev.args'-Chunk zu tun haben könnte -Option.Hier denke ich, könnte auch die Lösung sein ... – Julian

Antwort

1

Haben Sie versucht, this Lösung, die verschiedene Ausgabegeräte für verschiedene Ausgabeformate setzt? Hier ist sie:

Lösung zur Herstellung von PDF- und HTML-Ausgabe von einer einzigartigen Markdown-Datei durch spezifische Optionen Einstellung im Makefile knitr:

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

This Antwort auch interessante Ideen hat.

Hier ist sie:

Versuchen Sie diesen Code Chunk am Anfang des Dokuments Rmd setzen.

```{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) 
``` 

Eine der Paketoptionen zurück von opts_knit $ get() ist markdown.pandoc.to. Je nach gewähltem Ausgabeformat (HTML, Word oder PDF) ist dies offensichtlich auf "html", "docx" oder "latex" eingestellt. Sie können das also testen und die Chunk-Optionen fig.width und fig.height entsprechend einstellen.

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.Link-Only-Antworten können ungültig werden, wenn Die verknüpfte Seite ändert sich. –

+0

Fertig Danke, dass Sie mich wissen lassen! –