2013-07-31 27 views
51

Domyślnie nie mieści się na slajdzie, nie drukuje nawet w żaden inny sposób.Rozmiar i rozdzielczość wykresu z markerem R, dzianiną, pandokiem, rzutnikiem

Oto .Rmd: Edycja: wydaje się, że musisz użyć plot() w każdym kawałku. Druga działka jest teraz drukowana.

# Plot should show at high resolution 

```{r echo=FALSE, comment = ""} 
# load some data 
require(plyr) 
rbi <- ddply(baseball, .(year), summarise, 
    mean_rbi = mean(rbi, na.rm = TRUE)) 
``` 

```{r} 
# plot 
plot(mean_rbi ~ year, type = "l", data = rbi) 
``` 

# Second attempt 
```{r, fig.width = 2, fig.height = 2} 
plot(mean_rbi ~ year, type = "l", data = rbi) 
``` 

# Third attempt 
```{r, out.width = 2, out.height = 2} 
plot(mean_rbi ~ year, type = "l", data = rbi) 
``` 

# Fourth attempt 
```{r, out.width = '200px', out.height = '200px'} 
plot(mean_rbi ~ year, type = "l", data = rbi) 
``` 

# Fifth attempt 
```{r, out.width = '\\maxwidth'} 
plot(mean_rbi ~ year, type = "l", data = rbi) 
``` 

Zapisz że test.Rmd Następnie skompilować TeX za pomocą rzutnika:

knit("test.Rmd") 
system("pandoc -s -t beamer --slide-level 1 test.md -o test.tex") 

Otwórz test.tex w RStudio i kliknij "Kompilacja PDF".

Czytałem Yihui za documentation i mam nadzieję, że nie przegapiłem czegoś naprawdę oczywistego.

Edycja nowego kodu zawierającego sugestie Yihui.

```{r setup, include=FALSE} 
opts_chunk$set(dev = 'pdf') 
``` 

# Plot should show at high resolution 

```{r echo=FALSE, comment = ""} 
# load some data 
require(plyr) 
rbi <- ddply(baseball, .(year), summarise, 
    mean_rbi = mean(rbi, na.rm = TRUE)) 
``` 

```{r} 
# plot 
plot(mean_rbi ~ year, type = "l", data = rbi) 
``` 

# Second attempt 
```{r, fig.width = 4, fig.height = 4} 
plot(mean_rbi ~ year, type = "l", data = rbi) 
``` 

sessionInfo()

R version 3.0.1 (16/05/2013) 
Platform: x86_64-pc-linux-gnu (64-bit) 

Local: 
[1] LC_CTYPE = en_US.UTF-8 LC_NUMERIC = C LC_TIME = C LC_COLLATE = C   
[5] LC_MONETARY=C  LC_MESSAGES=C  LC_PAPER=C   LC_NAME=C   
[9] LC_ADDRESS=C   LC_TELEPHONE=C  LC_MEASUREMENT=C  LC_IDENTIFICATION=C 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] plyr_1.8  markdown_0.6 knitr_1.2  rCharts_0.3.51 slidify_0.3.52 

loaded via a namespace (and not attached): 
[1] RJSONIO_1.0-3 codetools_0.2-8 digest_0.6.3 evaluate_0.4.3 formatR_0.8  
[6] grid_3.0.1  lattice_0.20-15 stringr_0.6.2 tools_3.0.1  whisker_0.3-2 
[11] yaml_2.1.7 
+1

Edytowałem twój wpis i usunąłem 'print (x)', ponieważ jest zarówno bezsensowne, jak i bardzo zwodnicze. Mam nadzieję, że nie przeszkadza. –

Odpowiedz

36

myślę, że jest to często zadawane pytanie o zachowanie postaci w rzutnik slajdów wyprodukowanych z Pandoc i obniżki. Prawdziwy problem polega na tym, że R Markdown domyślnie generuje obrazy PNG (od knitr) i trudno jest uzyskać domyślny rozmiar obrazów PNG w LaTeX (nie wiem dlaczego). Jednak uzyskanie poprawnych rozmiarów obrazów w formacie PDF jest dość łatwe. Jednym z rozwiązań jest zresetować domyślne urządzenie graficznego do PDF w pierwszym fragmencie:

```{r setup, include=FALSE} 
opts_chunk$set(dev = 'pdf') 
``` 

Następnie wszystkie obrazy zostaną zapisane jako pliki PDF i LaTeX będzie zadowolony.

Twój drugi problem to mieszanie jednostek HTML z jednostkami LaTeX w out.width/out.height. LaTeX i HTML to bardzo różne technologie. Nie powinieneś oczekiwać, że \maxwidth będzie działał w HTML lub 200px w LaTeX. Zwłaszcza jeśli chcesz przekonwertować Markdown na LaTeX, lepiej nie ustawiaj out.width/out.height (użyj fig.width/fig.height i pozwól LaTeX użyć oryginalnego rozmiaru).

+0

To pomaga, ale jeszcze tam nie jest. Pierwsza fabuła jest wciąż ogromna. Druga działka jest niewielka, ale w bardzo niskiej rozdzielczości. Próbowałem dodać kod z [to podobne pytanie] (http://stackoverflow.com/questions/13004001) prosto do pliku .tex (po dzianiu). To kontroluje szerokość, ale nadal spada z dolnej części slajdu.Przepraszamy za 'print()' podstawową grafikę. Używam Ubuntu - informacje o sesji nadchodzą. – nacnudus

+5

@nacnudus lepiej usunąć katalog 'figure' zanim ponownie uruchomisz knitr; istnieje wiele mrocznych faktów dotyczących LaTeX, np. woli plik PNG niż PDF domyślnie, więc jeśli istnieją 'foo.png' i' foo.pdf', '\ includegraphics {foo}' użyje 'foo.png' –

15

Rozmiary rysunku są podawane w calach i mogą być uwzględnione jako globalna opcja formatu wyjściowego dokumentu. Na przykład:

--- 
title: "My Document" 
output: 
    html_document: 
    fig_width: 6 
    fig_height: 4 
--- 

i wielkość działki w urządzeniu graficznym można zwiększyć na poziomie bryłkach:

```{r, fig.width=14, fig.height=12}   #Expand the plot width to 14 inches 

ggplot(aes(x=mycolumn1, y=mycolumn2)) +  #specify the x and y aesthetic 
geom_line(size=2) +       #makes the line thicker 
theme_grey(base_size = 25)     #increases the size of the font 
``` 

Można również użyć out.width i out.height argumenty bezpośrednio określić rozmiar działki w pliku wyjściowym:

```{r, out.width="200px", out.height="200px"} #Expand the plot width to 200 pixels 

ggplot(aes(x=mycolumn1, y=mycolumn2)) +  #specify the x and y aesthetic 
geom_line(size=2) +       #makes the line thicker 
theme_grey(base_size = 25)     #increases the size of the font 
``` 
+0

poziomu porcji" rys.width " nie działa dla mnie. – theforestecologist

+0

@ theforestecologist Prawdopodobnie potrzebujesz przecinka przed pierwszą opcją, jak '{r chunk-name, opt = val, opt = val2}'. Ta metoda działa dla mnie. Nie jestem jednak wystarczająco utalentowany, żeby to zmienić. – Frank