मार्किट के लिए निट का उपयोग करके स्थानीय छवि के लिए आकार कैसे सेट करें?


149

मेरी एक स्थानीय छवि है, जिसे मैं एक .Rmdफाइल में शामिल करना चाहूंगा, जिसे मैं तब knitएचटीएमएल स्लाइड के साथ बदलूंगा Pandoc। प्रति इस पोस्ट , इस स्थानीय छवि सम्मिलित होगा:
![Image Title](path/to/your/image)

क्या छवि को सेट करने के लिए इस कोड को संशोधित करने का कोई तरीका है?


5
आकारों पर बेहतर नियंत्रण के लिए, आप HTML img टैग
Marius

5
दूसरी @ मारियस की टिप्पणी: daringfireball.net/projects/markdown/syntax का कहना है कि "इस लेखन के अनुसार, मार्कडाउन में किसी छवि के आयामों को निर्दिष्ट करने के लिए कोई वाक्यविन्यास नहीं है; यदि यह आपके लिए महत्वपूर्ण है, तो आप बस नियमित रूप से HTML <img> टैग कर सकते हैं । "
बेन बोलकर

12
HTML टैग का उपयोग करने में समस्या यह है कि छवि को अब Rmd रूपांतरण प्रक्रिया द्वारा बाहरी संसाधन के रूप में मान्यता नहीं दी जाती है, इसलिए यह प्रदान किए गए HTML के स्टैंड-अलोन संस्करण में शामिल नहीं होगा।
फ़ेबियाई

जवाबों:


101

आप pngउदाहरण के लिए पैकेज का उपयोग करके छवि भी पढ़ सकते हैं और इसे पैकेज grid.rasterसे उपयोग करके एक नियमित प्लॉट की तरह प्लॉट कर सकते हैं grid

```{r fig.width=1, fig.height=10,echo=FALSE}
library(png)
library(grid)
img <- readPNG("path/to/your/image")
 grid.raster(img)
```

इस विधि के साथ आप छवि के आकार का पूरा नियंत्रण रखते हैं।


धन्यवाद, यह slidy का उपयोग करके काम करता है। (Dzslides के साथ भी काम नहीं करता है, लेकिन मुझे विश्वास नहीं है कि यह उपलब्ध समाधान के साथ एक समस्या है)।
एडम स्मिथ 19

1
फ़ाइलपथ के आसपास के उद्धरण आवश्यक हैं, img <- readPNG("path/to/your/image")लेकिन मैं समाधान को संपादित करने में सक्षम नहीं था।
एडम स्मिथ

1
@AdamSmith मैंने सिर्फ path/to/your/imageआपके प्रश्न से आपकी प्रतिलिपि बनाई है । हाँ पथ का नाम एक स्ट्रिंग है ,, और आपको एक स्ट्रिंग को परिभाषित करने के लिए उद्धरण चिह्नों की आवश्यकता है। आशा है कि मैं स्पष्ट हूँ।
अगस्त २।'१३

1
RStudio के तहत इसे चलाकर, आप प्रदान किए गए png में एक बड़ा मार्जिन बनाएंगे।
पाउलो ई। कार्डसो

19
भविष्य के पाठक: यह उत्तर पुराना है
सीएल।

190

सवाल पुराना है, लेकिन फिर भी बहुत ध्यान आकर्षित करता है। जैसा कि मौजूदा उत्तर पुराने हैं, यहाँ एक और अधिक समाधान है:

स्थानीय छवियों का आकार बदलना

के रूप में knitr1.12 , वहाँ समारोह है include_graphics। से ?include_graphics(जोर मेरा):

इस फ़ंक्शन का उपयोग करने का मुख्य लाभ यह है कि यह इस अर्थ में पोर्टेबल है कि यह सभी दस्तावेज़ स्वरूपों के लिए काम करता है जो knitrसमर्थन करता है, इसलिए आपको यह सोचने की ज़रूरत नहीं है कि क्या आपको उपयोग करना है, उदाहरण के लिए, LaTeX या Markdown सिंटैक्स, बाहरी एम्बेड करने के लिए छवि। ग्राफिक्स आउटपुट से संबंधित चुनिंदा विकल्प जो सामान्य आर प्लॉट के लिए काम करते हैं, इन छवियों के लिए भी काम करते हैं, जैसे out.widthऔर out.height

उदाहरण:

```{r, out.width = "400px"}
knitr::include_graphics("path/to/image.png")
```

लाभ:

  • अधिक agastudy का जवाब : बाहरी पुस्तकालयों के लिए या छवि को फिर से rastering के लिए कोई ज़रूरत नहीं।
  • अधिक श्रुति कपूर के जवाब : मैन्युअल रूप से लिखने एचटीएमएल की आवश्यकता नहीं है। इसके अलावा, छवि फ़ाइल के स्व-निहित संस्करण में शामिल है।

सहित उत्पन्न चित्र

एक कबाड़ में उत्पन्न होने वाले भूखंड के लिए पथ की रचना करने के लिए (लेकिन शामिल नहीं है), चंक विकल्प opts_current$get("fig.path")(पथ निर्देशिका का आंकड़ा) और साथ ही opts_current$get("label")वर्तमान चंक का लेबल उपयोगी हो सकता है। निम्न उदाहरण fig.pathदो छवियों में से दूसरे को शामिल करने के लिए उपयोग करता है जो पहले चंक में उत्पन्न (लेकिन प्रदर्शित नहीं) थे:

```{r generate_figures, fig.show = "hide"}
library(knitr)
plot(1:10, col = "green")
plot(1:10, col = "red")
```

```{r}
include_graphics(sprintf("%sgenerate_figures-2.png", opts_current$get("fig.path")))
```

आकृति पथों का सामान्य पैटर्न है [fig.path]/[chunklabel]-[i].[ext], जहां chunklabelकबाड़ का लेबल जहां प्लॉट उत्पन्न किया गया है, वह iप्लॉट इंडेक्स (इस चंक के भीतर) है और extफ़ाइल एक्सटेंशन ( pngRMarkdown दस्तावेजों में डिफ़ॉल्ट रूप से) है।


18
पीडीएफ आउटपुट के लिए, आपको आंकड़ा आयामों के लिए इकाइयों को निर्दिष्ट करना होगा, उदाहरण के लिए out.width='100pt', अन्यथा लेटेक्स माप की अवैध इकाई के बारे में एक त्रुटि फेंक देगा।
एंडीगा

4
एमएस वर्ड आउटपुट के लिए भी काम करता है, लेकिन आउट। एक्सपोज़र और आउट.हाईट काम नहीं करता है
बेन

@andybega आपकी टिप्पणी के लिए धन्यवाद; मैंने इसे उत्तर में शामिल किया।
सीएल।

2
आप शायद चाहते हैंr, echo=FALSE, ...
जेम्सन क्विन

1
@jzadra कृपया अपने मुद्दे के लिए प्रतिलिपि प्रस्तुत करने योग्य कोड के साथ एक नया प्रश्न बनाएं। फिलहाल मैं आपके मुद्दे को पुन: पेश नहीं कर सकता (दूसरे कोड स्निपेट वर्बेटिम को आरएमडी फ़ाइल में कॉपी किया गया और HTML और वर्ड में बुना हुआ)।
सीएल।

112

अद्यतन किए गए उत्तर: knitr 1.17आप बस उपयोग कर सकते हैं

![Image Title](path/to/your/image){width=250px}

@jsb की टिप्पणी के अनुसार संपादित करें

ध्यान दें कि यह केवल रिक्त स्थान के बिना काम करता है, उदाहरण के लिए {चौड़ाई = 250px} नहीं {चौड़ाई = 250px}


6
मैंने इसे knitr 1.16 में आज़माया और ioslides का उपयोग करते समय यह काम नहीं किया। क्या यह सुविधा तब हटा दी गई है या यह एक ioslides समस्या है?
डॉ। माइक

2
मेरे लिए सभी पैकेजों के नवीनतम संस्करण पर भी काम नहीं करता है।
slhck

3
मेरे लिए काम करता है knitr 1.17 का उपयोग कर। सुनिश्चित करें कि आप रिक्त स्थान के बिना लिखते हैं, उदाहरण के लिए {width=250px}नहीं {width = 250px}
jsb

2
मेरे लिए काम करता है, अब तक का सबसे आसान समाधान।
युद्धपोत

यह मेरे xaringanसाथ काम नहीं करेगा knitr_1.21
लिंगबाग्र

37

यहां कुछ विकल्प दिए गए हैं जो फ़ाइल को छवि को बनाए बिना स्व-निहित रखते हैं:

divटैग में छवि को लपेटें

<div style="width:300px; height:200px">
![Image](path/to/image)
</div>

एक स्टाइलशीट का उपयोग करें

test.Rmd

---
title: test
output: html_document
css: test.css
---

## Page with an image {#myImagePage}

![Image](path/to/image)

test.css

#myImagePage img {
  width: 400px;
  height: 200px;
}

यदि आपकी एक से अधिक छवि है, तो आपको इस दूसरे विकल्प के लिए nth-child pseudo-selector का उपयोग करना पड़ सकता है।


1
यह एक अच्छा समाधान है लेकिन इसका उपयोग केवल html आउटपुट के साथ किया जा सकता है! अन्य आउटपुट सेटिंग की अनदेखी करेगा
xhudik

<div> ... </div>समाधान बहुत आसान लगता है। styleपहलू अनुपात को बनाए रखते हुए एक निश्चित प्रतिशत तक छवि को फिर से स्केल करने की सेटिंग क्या है ?
user101089

Px के बजाय% का उपयोग करने का प्रयास करें।
निक केनेडी

20

यदि आप HTML में कनवर्ट कर रहे हैं, तो आप HTML सिंटैक्स का उपयोग करके छवि का आकार सेट कर सकते हैं:

  <img src="path/to/image" height="400px" width="300px" />

या जो भी ऊंचाई और चौड़ाई आप देना चाहते हैं।


6
इस समाधान के साथ समस्या यह है कि छवि को अब Rmd रूपांतरण प्रक्रिया द्वारा बाहरी संसाधन के रूप में मान्यता नहीं दी जाती है, इसलिए यह प्रदान किए गए HTML के स्टैंड-अलोन संस्करण में शामिल नहीं होगा।
फ़ेबियाई

8

आज एक ही मुद्दा था और knitr 1.16पीडीएफ को बुनाई के साथ एक और विकल्प मिला (जिसके लिए आपको पंडोक स्थापित करना होगा):

![Image Title](path/to/your/image){width=70%}

इस पद्धति की आवश्यकता हो सकती है कि आप उस आकार को खोजने के लिए थोड़ा परीक्षण और त्रुटि करें जो आपके लिए काम करता है। यह विशेष रूप से सुविधाजनक है क्योंकि यह दो छवियों को एक पक्षीय प्रक्रिया से अलग करता है। उदाहरण के लिए:

![Image 1](path/to/image1){width=70%}![Image 2](path/to/image2){width=30%}

आप रचनात्मक प्राप्त कर सकते हैं और इनमें से एक-दूसरे को जोड़ सकते हैं और जैसा कि आप फिट देखते हैं, उन्हें आकार दें। अधिक विचारों और उदाहरणों के लिए https://rpubs.com/RatherBit/90926 देखें ।


2
क्या यह ठीक मेरे उत्तर के समान नहीं है?
इंस्पेक्टरलैंड्स

2
@hermestrismegistus लगभग, लेकिन मैं पिक्सेल चौड़ाई के बजाय प्रतिशत का उपयोग कर रहा हूँ। मुझे यह विकल्प उपयोगी लगा, क्योंकि मेरे विशेष मामले में मैं कई छवियों को एक साथ रख रहा था, जो इस तरह से बेहतर व्यवहार करते थे कि जब मैंने सटीक चौड़ाई दी
टेलर पेलरिन

5

एक अन्य विकल्प जो मेरे लिए काम करता है वह knitr::include_graphics()इस तरह के डीपीआई विकल्प के साथ खेल रहा है :

```{r}
knitr::include_graphics("path/to/image.png", dpi = 100)
```

... जो निश्चित है (जब तक आप गणित नहीं करते) ट्रंक में परिभाषित आयामों की तुलना में परीक्षण और त्रुटि है, लेकिन शायद यह किसी की मदद करेगा।


4

द नाइट्र :: शामिल_ग्राफिक्स समाधान ने आंकड़ों को आकार देने के लिए अच्छी तरह से काम किया, लेकिन मैं यह पता लगाने में असमर्थ था कि इसका उपयोग कैसे किया जाए। ऐसा करने के लिए मुझे यह पोस्ट उपयोगी लगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.