2015-04-08 11 views
8

मैं एक लूप का उपयोग कर रहा हूं ताकि एकाधिक पृष्ठों में कई बड़े आंकड़े गठबंधन और रैमार्कडाउन के साथ हो सकें। यह शब्द और एचटीएमएल आउटपुट के लिए ठीक काम करता है, लेकिन पीडीएफ आउटपुट में एक समस्या है।knitr और RMarkdown का उपयोग करके एक खंड में एकाधिक पृष्ठों में एकाधिक आंकड़े कैसे जोड़ें?

यह मेरी समस्या को पुन: उत्पन्न करने के लिए एक न्यूनतम RMarkdown उदाहरण है।

--- 
title: "Knitr test" 
date: "6 April 2015" 
output: pdf_document 
--- 


```{r, echo=FALSE, fig.width=6.5,fig.height=10} 
library(ggplot2) 
for (i in seq(1, 4)){ 
    p <- ggplot(cars, aes(speed, dist)) + geom_point() 
    print(p) 
} 
``` 

उत्पन्न पीडीएफ फ़ाइल इस तरह दिखती है। पृष्ठ में दो आंकड़े मुद्रित किए जाते हैं।

enter image description here

अगर मैं fig.height बदलने के लिए, आरएमडी फ़ाइल की कुछ खंड जोड़ने के लिए, दो आंकड़े अभी भी विभिन्न व्यवस्था के साथ एक ही पृष्ठ में मुद्रित कर रहे हैं।

--- 
title: "Knitr test" 
output: pdf_document 
date: "6 April 2015" 
--- 

## Section A 

Row B 

```{r plot_phenotype, echo = FALSE, fig.height=8, fig.width=6.5} 
library(ggplot2) 
for (i in seq(1, 4)) 
{ 
    p <- ggplot(cars, aes(speed, dist)) + geom_point() 
    print(p) 
} 

``` 

enter image description here

किसी भी सुझाव के लिए धन्यवाद इस समस्या को ठीक करने के लिए।

मैं RStudio 0.99.375 का उपयोग कर रहा हूं। यह मेरी सत्र जानकारी है।

sessionInfo() 
R version 3.1.3 (2015-03-09) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

locale: 
[1] LC_COLLATE=English_Australia.1252 LC_CTYPE=English_Australia.1252 
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C      
[5] LC_TIME=English_Australia.1252  

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

other attached packages: 
[1] rmarkdown_0.5.3.1 knitr_1.9.5  

loaded via a namespace (and not attached): 
[1] colorspace_1.2-5 digest_0.6.8  evaluate_0.5.5 formatR_1.0  
[5] ggplot2_1.0.0 grid_3.1.3  gtable_0.1.2  htmltools_0.2.6 
[9] MASS_7.3-34  munsell_0.4.2 plyr_1.8.1  proto_0.3-10  
[13] Rcpp_0.11.5  reshape2_1.4.1 scales_0.2.4  stringr_0.6.2 
[17] tcltk_3.1.3  tools_3.1.3  yaml_2.1.13  

उत्तर

12

मैंने अपनी समस्या हल कर दी है।

जेनरेट की गई टीएक्स फ़ाइल में, प्रत्येक आकृति के बाद नई लाइनें नहीं हैं। यह टेक्स कोड हमें ऊपर आरएमडी फ़ाइल का उपयोग करके जेनरेट किया गया:

\includegraphics{test_files/figure-latex/plot_phenotype-1.pdf} 
\includegraphics{test_files/figure-latex/plot_phenotype-2.pdf} 
\includegraphics{test_files/figure-latex/plot_phenotype-3.pdf} 
\includegraphics{test_files/figure-latex/plot_phenotype-4.pdf} 

समाधान प्रत्येक चक्र के बाद एक चित्र मुद्रित करने के लिए एक नई पंक्ति जोड़ना है।

cat('\r\n\r\n') 

मुझे यकीन नहीं है कि मुझे यहां दो "\ r \ n" की आवश्यकता क्यों है।उत्पन्न tex फ़ाइल लगता है:

\includegraphics{test_files/figure-latex/plot_phenotype-1.pdf} 

\includegraphics{test_files/figure-latex/plot_phenotype-2.pdf} 

\includegraphics{test_files/figure-latex/plot_phenotype-3.pdf} 

\includegraphics{test_files/figure-latex/plot_phenotype-4.pdf} 

यह मेरा RMD से भरा फ़ाइल उदाहरण

--- 
title: "Knitr test" 
output: 
    pdf_document: 
    keep_tex: yes 
date: "6 April 2015" 
--- 

## Section A 

Row B 

```{r plot_phenotype, echo = FALSE, fig.height=8, fig.width=6.5} 
library(ggplot2) 
library(grid) 
for (i in seq(1, 4)) 
{ 
    grid.newpage() 
    p <- ggplot(cars, aes(speed, dist)) + geom_point() 

    print(p) 
    cat('\r\n\r\n') 
} 


``` 
+0

यदि आप जिस प्लॉट के साथ काम कर रहे हैं वह कई प्लॉट ग्रॉब्स के साथ एक जीटीबल है, तो आप 'print (p) 'को' grid.draw (p)' से बदल सकते हैं और यह अभी भी काम करेगा। यदि आप नहीं करते हैं, तो यह टेबलग्राब आउटपुट भी प्रस्तुत करेगा। –

4

संपादित करें 1 (LaTeX): मैं इस, RMarkdown के साथ काम करने के बाद से यह नई पृष्ठों की समस्याओं है पाने के लिए नहीं कर पा रहे। लेकिन शुद्ध लाटेक्स का उपयोग एक पृष्ठ में कई प्लॉट और शुरुआत में पाठ के साथ इस मुद्दे को हल करने लगता है। यकीन नहीं है कि अगर आप यही चाहते हैं। RStudio में एक नया आर Sweave (.Rnw) फ़ाइल को खोलने और कोशिश:

\documentclass{article} 
\begin{document} 
\title{A report} 
\author{Me} 
\maketitle 
\section{One section} 
Some text that does not say anything interesting. 

<<r, echo=FALSE, fig.width=6.5, fig.height=7>>= 
library(ggplot2) 
for (i in seq(1, 4)){ 
    p <- ggplot(cars, aes(speed, dist)) + geom_point() 
    print(p) 
} 
@ 

\end{document} 

यह निम्न का उत्पादन:

just a pdf

संपादित 2 (RMarkdown) (अपने जवाब के आधार पर): अपने उत्तर से कोड चलाते हुए मुझे पाठ के साथ पहला पृष्ठ मिलता है, और उसके बाद प्रत्येक प्लॉट के लिए एक पृष्ठ मिलता है। पैदा करता है

--- 
title: "Knitr test" 
output: pdf_document 
date: "6 April 2015" 
--- 

## Section A 

Row B 

```{r plot_phenotype, echo = FALSE, fig.height=10, fig.width=6.5} 
library(ggplot2) 
for (i in seq(1, 4)) 
{ 
    p <- ggplot(cars, aes(speed, dist)) + geom_point() 

    print(p) 
    cat('\n\n') 
} 


``` 

निम्नलिखित में से कौन:: यदि यह तुम क्या चाहते है, तो आप एक ही परिणाम बस का उपयोग कर (यानी दूर करने grid.newpage, \r और keep_tex) प्राप्त कर सकते हैं

other screenshot

अगर आप बदलना अंजीर। 7 तक, आपको उपरोक्त LaTeX के साथ एक ही परिणाम मिल जाएगा।

+0

अपने सुझाव के लिए धन्यवाद है। अगर ऊंचाई 8 में बदल जाती है तो बिल्ली की आवश्यकता नहीं होती है। हाँ, ऊंचाई के साथ खेलें काम कर सकते हैं, लेकिन यह सुनिश्चित नहीं है कि इस समस्या को अन्य ऊंचाई के कारण क्यों बनाया जाए। – Bangyou

+0

@ बांग्यौ हाँ, क्षमा करें, मैं 'बिल्ली' और एक ही समय में ऊंचाई के साथ खेल रहा था इसलिए मुझे नहीं पता था कि ऊंचाई मुख्य मुद्दा थी। मुझे नहीं लगता कि एक आदर्श पीडीएफ (RMarkdown का उपयोग करके) और लूप के लिए एक स्वचालित, इस तरह के पाठ के साथ संयुक्त करने के लिए एक आसान तरीका है। यह हमेशा एक ही पृष्ठ में दो भूखंडों को जोड़ता प्रतीत होता है .. मेरा जवाब वास्तव में शामिल अनुभागों आदि के साथ काम नहीं करता है। –

+1

@ बांग्यौ मैंने लाटेक्स का उपयोग करके अपना जवाब बदल दिया है जो ठीक काम करता है। मार्कडाउन से पीडीएफ तक पूरा आरएमर्कडाउन शायद आंकड़े व्यवस्था के साथ मुद्दों का कारण बनता है। –

संबंधित मुद्दे