image - अंकन से डॉकेक्स तक पैंडोक रूपांतरण के साथ चित्रा का आकार




markdown docx (3)

यहां छवि मैजिक का उपयोग करके एक आर स्क्रिप्ट से आकृतियों का आकार बदलने का एक उपाय है। 70% अनुपात एक अच्छा विकल्प लगता है।

# the path containing the Rmd file :
wd <- "..."
setwd(wd)

# the folder containing the figures :
fig.path <- paste0(wd, "/figure")
# all png figures :
figures <- list.files(fig.path, pattern=".png", all.files=TRUE)

# (safety) create copies of the original files
dir.create(paste0(fig.path,"_copy"))
for(i in 1:length(figures)){
  fig <- paste0(fig.path, "/", figures[i])
  file.copy(fig,"figure_copy")
}

# resize all figures
for(i in 1:length(figures)){
    fig <- paste0(fig.path, "/", figures[i])
    comm <- paste("convert -resize 70%", fig, fig)
    shell(comm)
}

# then run pandoc from a command line  
# or from the pandoc() function :
library(knitr)
pandoc("MyReport.md", "docx")

इमेजमेजिक की पुन : resize फ़ंक्शन के बारे में अधिक जानकारी: www.perturb.org

मैं Rstudio में Rmarkdown के साथ एक रिपोर्ट लिखें बुनना के साथ html में परिवर्तित करते समय, बुनना द्वारा निर्मित एक मार्कडाउन फ़ाइल भी होती है। मैं इस फाइल को pandoc साथ pandoc

pandoc -f markdown -t docx input.md -o output.docx

output.docx फ़ाइल एक समस्या को छोड़कर अच्छा है: आंकड़ों के आकार बदल दिए जाते हैं, मुझे मैन्युअल रूप से Word के आंकड़ों का आकार बदलने की जरूरत है I क्या ऐसा करने के लिए कुछ है, संभवतः pandoc साथ एक विकल्प, सही आंकड़े आकार प्राप्त करने के लिए?


मैं भी एक आर मार्कडाउन को एक html और .docx / .odt दोनों में अच्छे आकार और संकल्प के आंकड़ों के साथ बदलना चाहता हूं। अब तक, मुझे पता चला कि ऐसा करने का सबसे अच्छा तरीका स्पष्ट रूप से .md दस्तावेज़ (डीपीआई, अंजीर और अंजीर। विकल्प) में ग्राफ़ के रिज़ॉल्यूशन और आकार को परिभाषित करता है। यदि आप ऐसा करते हैं तो आपके पास प्रकाशन के लिए अच्छा ग्राफ है और ओड / डॉकएक्स ठीक है। यदि आप डिफ़ॉल्ट 72 डीपीआई से ज्यादा डीपीआई का उपयोग करते हैं, तो यह समस्या यह है कि ग्राफ एचटीएमएल फ़ाइल में बहुत बड़ा दिखेगा। यहां 3 दृष्टिकोण हैं जो मैंने इसे संभालने के लिए उपयोग किया है (एनबी मैं स्पिन () वाक्यविन्यास के साथ आर स्क्रिप्ट का उपयोग करता हूं):

1) बाहर का उपयोग करें। Extra = 'WIDTH = "75%"' बुनना विकल्प में यह विंडो के सभी ग्राफ़ को विंडो की चौड़ाई के 75% पर कब्जा करने के लिए बाध्य करेगा। यह एक त्वरित समाधान है लेकिन इष्टतम नहीं है यदि आपके पास बहुत भिन्न आकार वाले भूखंड हैं (एनबी मैं इंच के बजाय सेंटीमीटर के साथ काम करना पसंद करता हूं, इसलिए हर जगह / 2.55)

library(knitr)
opts_chunk$set(echo = FALSE, dev = c("png", "pdf"), dpi = 400,
               fig.width = 8/2.54, fig.height = 8/2.54,
               out.extra ='WIDTH="75%"'
)

data(iris)

#' # Iris datatset
summary(iris)
boxplot(iris[,1:4])

#+ fig.width=14/2.54, fig.height=10/2.54
par(mar = c(2,2,2,2))
pairs(iris[,-5])

2) एचआईएमएल फ़ाइल में पिक्सल में ग्राफ़ के आकार को निर्दिष्ट करने के लिए चौड़ाई और आउट का उपयोग करें। मैं एक निरंतर "sc" का उपयोग करके साजिश के आकार को HTML आउटपुट में स्केल कर रहा हूं। यह अधिक सटीक दृष्टिकोण है लेकिन समस्या यह है कि प्रत्येक ग्राफ के लिए आपको अंजीर / चौड़ाई / ऊंचाई और बाहर की चौड़ाई / ऊंचाई दोनों को परिभाषित करना पड़ता है और यह वास्तव में उभर रहा है! आदर्श रूप से आपको वैश्विक विकल्प निर्दिष्ट करने में सक्षम होना चाहिए, जैसे out.width = 150 * अंजीर। (जहां अंडाकार। से चक से चक में परिवर्तन होता है)। शायद ऐसा कुछ संभव है, लेकिन मुझे नहीं पता कि कैसे

#+ echo = FALSE
library(knitr)
sc <- 150
opts_chunk$set(echo = FALSE, dev = c("png", "pdf"), dpi = 400,
                fig.width = 8/2.54, fig.height = 8/2.54,
                out.width = sc*8/2.54, out.height = sc*8/2.54
)

data(iris)

#' # Iris datatset
summary(iris)
boxplot(iris[,1:4])

#+ fig.width=14/2.54, fig.height=10/2.54, out.width= sc * 14/2.54, out.height= sc * 10/2.54
par(mar = c(2,2,2,2))
pairs(iris[,-5])

ध्यान दें कि इन दो समाधानों के लिए, मुझे लगता है कि आप सीधे अपने एमडी फाइल को ओडटी में पैंडोक के साथ नहीं बदल सकते (आंकड़े शामिल नहीं हैं)। मैं एमडी को html में बदलता हूं और फिर ओडीटी में html (docx के लिए कोशिश नहीं की)। ऐसा कुछ (यदि पिछले आर स्क्रिप्ट नाम "figsize1.R" है):

library(knitr)
setwd("/home/gilles/")
spin("figsize1.R")

system("pandoc figsize1.md -o figsize1.html")
system("pandoc figsize1.html -o figsize1.odt")

3) ओपीडी / डीओसीएक्स आउटपुट के लिए उच्च संकल्प (~ 300) के साथ एक बार एचपीएम आउटपुट के लिए कम डीपीआई वैल्यू (~ 96) के साथ और दो बार अपने दस्तावेज़ को संकलित करें। अब मेरा पसंदीदा तरीका यह है मुख्य नुकसान यह है कि आपको दो बार संकलन करना होगा, लेकिन यह वास्तव में मेरे लिए समस्या नहीं है क्योंकि आम तौर पर ओडीटी फ़ाइल को केवल उपयोगकर्ताओं के अंत तक प्रदान करने के लिए नौकरी के बहुत ही अंत की आवश्यकता होती है। मैं नियमित रूप से एचटीएमएल के साथ काम करता हूं, जो कि रूस्ट्यूओ में एचटीएमएल नोटबुक बटन के साथ काम करता है।

#+ echo = FALSE
library(knitr)

opts_chunk$set(echo = FALSE, dev = c("png", "pdf"), 
               fig.width = 8/2.54, fig.height = 8/2.54
)

data(iris)

#' # Iris datatset
summary(iris)
boxplot(iris[,1:4])

#+ fig.width=14/2.54, fig.height=10/2.54
par(mar = c(2,2,2,2))
pairs(iris[,-5])

फिर निम्नलिखित स्क्रिप्ट के साथ 2 आउटपुट संकलित करें (एनबी यहां आप सीधे एमडी फाइल को एचटीएमएल में बदल सकते हैं):

library(knitr)
setwd("/home/gilles")

opts_chunk$set(dpi=96)
spin("figsize3.R", knit=FALSE)
knit2html("figsize3.Rmd")

opts_chunk$set(dpi=400)
spin("figsize3.R")
system("pandoc figsize3.md -o figsize3.odt")

एक आसान तरीके से अलग-अलग चक्कर विकल्पों में स्केल फ़ैक्टर को शामिल करना शामिल है:

{r, fig.width=8*k, fig.height=6*k}

और वैश्विक चर विकल्पों में एक चर dpi :

opts_chunk$set(dpi = dpi)

फिर आप वैश्विक वातावरण में Rmd फ़ाइल को बुनाई से पहले dpi और k के मूल्यों को सेट कर सकते हैं:

dpi <<- 96    
k <<- 1

या आप उन्हें Rmd फ़ाइल में एक टुकड़े में सेट कर सकते हैं (उदाहरण के लिए पहले खंड में k सेट करें)।





pandoc