2015-03-26 15 views
12

Próbuję rozwiązać problem zauważalnej różnicy w wielkości czcionki podczas porównywania wykresów wygenerowanych dla dokumentu knitr. Wynik HTML/markdown wydaje się być tym, co uważam za prawidłowy rozmiar, podczas gdy wynik PDF/Latex jest około 2-4 pts większy (np. Gdy spodziewałem się 12 punktów, wynik jest bliższy 14 lub 16 punktów). Zauważ, że problem wydaje się być ograniczony do tekstu działki/rysunku i nie wydaje się, aby był widoczny w innym tekście w dokumencie wyjściowym.Osiąganie stałych rozmiarów czcionek figur z knitr, HTML/markdown i PDF/Latex

Najprostszy sposób, aby to zademonstrować, dotyczy domyślnej zawartości, którą RStudio (wersja 0.99.329) zapełnia po utworzeniu nowego pliku *.Rmd. Porównanie równoległe jest dostępne pod numerem this link. Moim zdaniem wersja HTML ma odpowiednie rozmiary, a wersja PDF/Latex nie.

Zgodnie z moją wiedzą, nie mam żadnych niestandardowych ustawień w moim .Rprofile lub innych miejscach, które mogłyby mieć wpływ na ten problem. Próbowałem wyłączenie/włączenie przycinania pdf i nie wydaje się wpływać na problem albo. Powieliłem problem na komputerze współpracowników (również z systemem OS X i tą samą wersją RStudio).

Poza ramą (tj. Po prostu działający kod R), nie wydaje się być taka różnica między wyjściami PDF i PNG. Na przykład poniższy kod tworzy wyjście, które jest dość podobny:

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

Biorąc pod uwagę, że powyższy kod produkuje działek wyjściowych, które są dość podobne, jestem podejrzliwy kwestie widzę są związane knitr lub rmarkdown/proces konwersji pandoc.

Moje główne pytanie brzmi: czy spodziewany jest poziom różnic między formatami wyjściowymi? Czy jestem jedynym? Czy jest to unikalne w moim systemie?

Jeśli to oczekiwane zachowanie, w jaki sposób ludzie godzą się z problemem? Dla ggplots użyłem theme_bw(8.5), aby zmniejszyć czcionki dla plików PDF/latex. Działa to, ale dodaje kolejny poziom złożoności podczas tworzenia danych wyjściowych dla wielu platform/zastosowań z tego samego pliku *.Rmd ... jedną z kluczowych zalet .

Specyfikacje mojej konfiguracji i systemu

  • OS X 10.10.2, MacBook Pro (Retina, 15-calowy, Early 2013)
  • RStudio wersja 0.99.329
  • R w wersji 3.1.2 (31.10.2014) - "dyni Kask"
  • rmarkdown 0.5.1
  • pandoc 1.13.1
+0

Mam ten sam problem. Myślę, że ma to coś wspólnego z różnymi standardowymi urządzeniami graficznymi dla plików PDF i HTML ("dev: (" pdf "dla wyjścia LaTeX i" png "dla HTML/markdown; znak)", http://yihui.name/knitr/options /). Jeśli ręcznie ustawię "dev = pdf" dla plików html, nie będzie można już wyświetlać, ale wygenerowany plik pokazuje ten sam rozmiar czcionki co przy generowaniu PDF. Jeśli ręcznie ustawię 'dev = 'png'' dla plików pdf, otrzymuję komunikat' error: unused argument (pdf = list (useDingbats = FALSE) ', który może mieć coś wspólnego z' dev.args'-chunk -Opcja, tutaj myślę, że może być również rozwiązaniem ... – Julian

Odpowiedz

1

Czy wypróbowałeś rozwiązanie this, które ustawia różne urządzenia wyjściowe dla różnych formatów wyjściowych? Oto ona:

rozwiązanie do produkcji PDF i HTML wyjście z unikalnego pliku Markdown ustawiając konkretne opcje knitr w 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 [email protected] 
rm temp.md 

This odpowiedź ma również ciekawe pomysły.

Oto ona:

Spróbuj umieścić ten fragment kodu na początku dokumentu 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) 
``` 

Jedna z opcji pakietów zwróconych przez opts_knit $ get() to markdown.pandoc.to. Jest to oczywiście ustawione na "html", "docx" lub "latex" w zależności od wybranego formatu wyjściowego (HTML, Word lub PDF). Możesz przetestować to i odpowiednio ustawić opcje porcji fig.width i fig.height.

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić w nim istotne części odpowiedzi i podać link do odsyłacza. strona z linkami zmian –

+0

Zrobione, dziękuję za poinformowanie mnie! –

Powiązane problemy