2013-07-31 35 views
51

Không vừa với trang chiếu theo mặc định, thậm chí không in bằng bất kỳ phương tiện nào khác.Kích thước và độ phân giải lô với dấu R, chữ thập, hình tròn, hình chữ nhật

Đây là .Rmd: Chỉnh sửa: có vẻ như bạn phải sử dụng ô() trong mỗi đoạn. Lô thứ hai hiện in.

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

Save rằng như test.Rmd Sau đó biên dịch để tex sử dụng máy chiếu:

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

mở test.tex trong RStudio và bấm vào nút "Compile PDF".

Tôi đã đọc Yihui's documentation và hy vọng tôi chưa bỏ lỡ điều gì đó thực sự rõ ràng.

Chỉnh sửa mã mới kết hợp với đề xuất của 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

Tôi đã chỉnh sửa bài đăng của bạn và xóa 'in (x)' vì nó vừa vô nghĩa vừa gây hiểu lầm cao. Tôi hy vọng bạn không phiền. –

Trả lời

36

Tôi nghĩ rằng đó là một câu hỏi thường gặp về hành vi của các nhân vật trong slide máy chiếu được sản xuất từ ​​Pandoc và markdown. Vấn đề thực sự là, R Markdown sản xuất hình ảnh PNG theo mặc định (từ knitr), và thật khó để có được kích thước hình ảnh PNG đúng trong LaTeX theo mặc định (tôi không biết tại sao). Nó là khá dễ dàng, tuy nhiên, để có được kích thước của hình ảnh PDF chính xác. Một giải pháp là đặt lại thiết bị đồ họa mặc định thành PDF trong đoạn đầu tiên của bạn:

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

Sau đó, tất cả hình ảnh sẽ được ghi dưới dạng tệp PDF và LaTeX sẽ vui vẻ.

Vấn đề thứ hai của bạn là bạn đang trộn các đơn vị HTML với các đơn vị LaTeX trong out.width/out.height. LaTeX và HTML là những công nghệ rất khác nhau. Bạn không nên mong đợi \maxwidth hoạt động ở dạng HTML hoặc 200px trong LaTeX. Đặc biệt là khi bạn muốn chuyển đổi Markdown thành LaTeX, bạn không nên đặt out.width/out.height (sử dụng fig.width/fig.height và để LaTeX sử dụng kích thước gốc).

+0

Điều đó giúp ích, nhưng nó chưa hoàn toàn ở đó. Cốt truyện đầu tiên vẫn còn rất lớn. Cốt truyện thứ hai là nhỏ, nhưng ở độ phân giải rất thấp. Tôi đã thử thêm mã từ [câu hỏi tương tự này] (http://stackoverflow.com/questions/13004001) thẳng vào tệp .tex (sau khi đan). Điều đó kiểm soát chiều rộng, nhưng nó vẫn rơi xuống dưới cùng của slide.Xin lỗi cho đồ họa cơ bản 'print()' ing. Tôi sử dụng Ubuntu - phiên thông tin đến ngay lập tức. – nacnudus

+5

@nacnudus bạn nên xóa thư mục 'figure' trước khi bạn chạy lại knitr; có rất nhiều sự kiện đen tối về LaTeX, ví dụ: nó thích PNG hơn PDF theo mặc định, vì vậy nếu có 'foo.png' và' foo.pdf', '\ includegraphics {foo}' sẽ sử dụng 'foo.png' –

15

Kích thước hình được chỉ định bằng inch và có thể được bao gồm dưới dạng tùy chọn toàn cục của định dạng đầu ra tài liệu. Ví dụ:

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

Và kích thước của cốt truyện trong thiết bị đồ họa có thể được tăng lên ở mức độ đoạn:

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

Bạn cũng có thể sử dụng out.widthout.height tranh luận trực tiếp xác định kích thước của cốt truyện trong tệp xuất:

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

mức chunk" fig.width " không làm việc cho tôi. – theforestecologist

+0

@theforestecologist Có thể cần dấu phẩy trước tùy chọn đầu tiên, như '{r chunk-name, opt = val, opt = val2}'. Bằng cách đó làm việc cho tôi. Mặc dù vậy, tôi không đủ mạnh để chỉnh sửa điều đó. – Frank

Các vấn đề liên quan