মার্কডাউন করার জন্য নিটার ব্যবহার করে কীভাবে স্থানীয় চিত্রের জন্য আকার নির্ধারণ করবেন?


149

আমার একটি স্থানীয় চিত্র রয়েছে .Rmdযা আমি একটি ফাইলে অন্তর্ভুক্ত করতে চাই যা আমি এর পরে knitএইচটিএমএল স্লাইডগুলিতে রূপান্তর করব Pandoc। প্রতি পোস্টটি , এই স্থানীয় চিত্র সন্নিবেশ করা হবে:
![Image Title](path/to/your/image)

চিত্রের আকার নির্ধারণের জন্য কি এই কোডটি সংশোধন করার কোনও উপায় আছে?


5
আকারগুলির উপর সূক্ষ্ম নিয়ন্ত্রণের জন্য, আপনি শেষ করতে পারেন এইচটিএমএল ইমগ ট্যাগ
মারিয়াস

5
দ্বিতীয় @ মারিয়াসের মন্তব্য: ডারিংফায়ারবল.টল / প্রজেক্টস / মার্কডাউন / সাইন্ট্যাক্স বলছে "এই লেখাটি হিসাবে, মার্কডাউনের কোনও চিত্রের মাত্রা নির্দিষ্ট করার জন্য কোনও বাক্য গঠন নেই; যদি এটি আপনার কাছে গুরুত্বপূর্ণ হয় তবে আপনি কেবল নিয়মিত এইচটিএমএল <img> ট্যাগ ব্যবহার করতে পারেন । "
বেন বলকার

12
এইচটিএমএল ট্যাগ ব্যবহার করে সমস্যাটি হ'ল আরএমডি রূপান্তর প্রক্রিয়াটি দ্বারা চিত্রটি বাহ্যিক সংস্থান হিসাবে আর স্বীকৃত হয় না, তাই এটি রেন্ডার করা এইচটিএমএলের একক সংস্করণে অন্তর্ভুক্ত করা হবে না।
অনুরাগীরা

উত্তর:


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

এই পদ্ধতির সাহায্যে আপনার চিত্রের আকারের পুরো নিয়ন্ত্রণ রয়েছে।


আপনাকে ধন্যবাদ, এটি স্লিডি ব্যবহার করে কাজ করে। (ডিজেস্লাইডস হিসাবে কাজ করে না, তবে আমি বিশ্বাস করি না যে এটি সরবরাহিত সমাধানের সাথে কোনও সমস্যা)।
অ্যাডাম স্মিথ

1
ফাইলপথের চারপাশে উদ্ধৃতিগুলি দরকার img <- readPNG("path/to/your/image")তবে আমি সমাধানটি সম্পাদনা করতে পারিনি।
অ্যাডাম স্মিথ

1
@ অ্যাডামস্মিথ আমি path/to/your/imageআপনার প্রশ্নটি থেকে কেবল অনুলিপি করেছি । হ্যাঁ পাথের নামটি একটি স্ট্রিং ,,, এবং একটি স্ট্রিং সংজ্ঞায়িত করার জন্য আপনার উদ্ধৃতিগুলি দরকার। আশা করি আমি পরিষ্কার।
agstudy

1
এটি আরটিস্টুডিওর অধীনে চালিত করে, আপনি রেন্ডার করা পিএনজি-তে একটি বিশাল মার্জিন তৈরি করবেন।
পাওলো ই। কার্ডোসো

19
ভবিষ্যত পাঠক: এই উত্তরটি পুরানো
সিএল

190

প্রশ্নটি পুরানো, তবে এখনও অনেক মনোযোগ পেয়েছে। বিদ্যমান উত্তরগুলি পুরানো হওয়ার সাথে সাথে এখানে আরও একটি আপ-টু ডেট সমাধান রয়েছে:

স্থানীয় চিত্রগুলির আকার পরিবর্তন করা

knitr1.12 হিসাবে, ফাংশন আছে include_graphics। থেকে ?include_graphics(জোর দেওয়া খনি):

এই ফাংশনটি ব্যবহার করার বড় সুবিধাটি হ'ল এটি বহনযোগ্য যে এটি সমস্ত দস্তাবেজ ফর্ম্যাটগুলিতে knitrসমর্থন করে যা সমর্থন করে, সুতরাং আপনাকে বাহ্যিক এম্বেড করার জন্য ল্যাকেক্স বা মার্কডাউন সিনট্যাক্স ব্যবহার করতে হবে কিনা তা ভাবার দরকার নেই you চিত্র। খণ্ড গ্রাফিক্স আউটপুট স্বাভাবিক আর প্লট কাজ যেমন এই ছবি, কাজ করার জন্য সম্পর্কিত বিকল্প out.widthএবং out.height

উদাহরণ:

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

সুবিধাদি:

  • ওভার agastudy এর উত্তর : বাইরের লাইব্রেরির জন্য বা ইমেজ রি-rastering প্রয়োজন নেই।
  • ওভার শ্রুতি কাপুর এর উত্তর : নিজে লেখার HTML এ কোন প্রয়োজন নেই। তদ্ব্যতীত, চিত্রটি ফাইলের স্ব-অন্তর্ভুক্ত সংস্করণে অন্তর্ভুক্ত রয়েছে।

উত্পন্ন চিত্র সহ

কোনও অংশে উত্পন্ন প্লটের পাথ রচনা করার জন্য (তবে অন্তর্ভুক্ত নয়), অংশগুলি বিকল্পগুলি 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', অন্যথায় ক্ষীর অবৈধ পরিমাপের একক সম্পর্কে ত্রুটি ছুঁড়ে দেবে।
andybega

4
এমএস ওয়ার্ড আউটপুটটির জন্যও কাজ করে, তবে আউট-প্রস্থ এবং আউট-হাইট কাজ করে না
বেন

@ অ্যান্ডবেগা আপনার মন্তব্যের জন্য আপনাকে ধন্যবাদ; আমি এটি উত্তরে অন্তর্ভুক্ত করেছি।
সিএল

2
আপনি সম্ভবত চানr, echo=FALSE, ...
জেমসন কুইন

1
@ জজাদ্রা দয়া করে আপনার সমস্যার জন্য পুনরায় প্রজননযোগ্য কোড সহ একটি নতুন প্রশ্ন তৈরি করুন। এই মুহুর্তে আমি আপনার সমস্যাটি পুনরুত্পাদন করতে পারি না (দ্বিতীয় কোড স্নিপেট ভারব্যাটিয়াম একটি আরএমডি ফাইলে অনুলিপি করে এইচটিএমএল এবং ওয়ার্ডে বোনা)।
সিএল

112

আপডেট করা উত্তর: knitr 1.17আপনি কেবল ব্যবহার করতে পারেন

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

@jsb এর মন্তব্য অনুসারে সম্পাদনা করুন

নোট করুন এটি কেবল ফাঁকা জায়গা ছাড়া কাজ করে, যেমন {প্রস্থ = 250px} প্রস্থ = 250px}


6
আমি নিটার 1.16 এ চেষ্টা করেছি এবং আইস্লাইড ব্যবহার করার সময় এটি কার্যকর হয়নি। তারপরে কি এই বৈশিষ্ট্যটি সরানো হয়েছে বা এটি কোনও আইস্লাইডস ইস্যু?
ডাঃ মাইক 13

2
সমস্ত প্যাকেজগুলির সর্বশেষতম সংস্করণে আমার জন্যও কাজ করে না।
slhck

3
নিট 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;
}

আপনার যদি একাধিক চিত্র থাকে তবে এই দ্বিতীয় বিকল্পটির জন্য আপনার নবম চাইল্ড সিউডো-সিলেক্টর ব্যবহার করতে হবে।


1
এটি একটি ভাল সমাধান তবে এটি কেবল এইচটিএমএল আউটপুট দিয়েই ব্যবহার করা যেতে পারে! অন্যান্য আউটপুট সেটিংসটি উপেক্ষা করবে
xhudik

<div> ... </div>সমাধান খুব সহজ বলে মনে হয়। styleদিক অনুপাত বজায় রেখে কোনও চিত্রকে একটি নির্দিষ্ট শতাংশে পুনরায় স্কেল করার সেটিংটি কী ?
ব্যবহারকারী 101089

Px এর পরিবর্তে% ব্যবহারের চেষ্টা করুন।
নিক কেনেডি

20

আপনি যদি এইচটিএমএল রূপান্তর করছেন তবে আপনি এইচটিএমএল সিনট্যাক্স ব্যবহার করে চিত্রটির আকার নির্ধারণ করতে পারেন:

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

বা আপনি যে উচ্চতা এবং প্রস্থ দিতে চান তা দিন।


6
এই সমাধানটির সমস্যাটি হ'ল চিত্রটি আরএমডি রূপান্তর প্রক্রিয়া দ্বারা বাহ্যিক সংস্থান হিসাবে স্বীকৃত হয় না, তাই এটি রেন্ডার করা এইচটিএমএল এর একক সংস্করণে অন্তর্ভুক্ত হবে না।
অনুরাগীরা

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
@ হেরেমস্ট্রিসমেগিস্টাস প্রায়, তবে আমি পিক্সেল প্রস্থের চেয়ে শতাংশের প্রস্থ ব্যবহার করছি। আমি এই বিকল্পটি দরকারী হিসাবে খুঁজে পেয়েছি কারণ আমার বিশেষ ক্ষেত্রে আমি একাধিক চিত্র পাশাপাশি রেখেছিলাম, যা এইরকম ভাল আচরণ করেছিল যে যখন আমি যথাযথ প্রস্থ দিয়েছিলাম
টেলর পেলারিন

5

আর একটি বিকল্প যা আমার পক্ষে কাজ করেছে তা এই জাতীয় ডিপিআই বিকল্পের সাথে খেলছে knitr::include_graphics():

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

... যা নিশ্চিত (আপনি যদি গণিত না করেন) হ'ল খণ্ডে মাত্রা নির্ধারণের সাথে তুলনা এবং ত্রুটি, তবে এটি কারওর পক্ষে সহায়তা করবে।


4

নিট :: অন্তর্ভুক্ত_গ্রাফিক্স সমাধান পরিসংখ্যানগুলিকে পুনরায় আকার দেওয়ার জন্য ভাল কাজ করেছে, তবে পাশাপাশি পাশের পুনরায় আকারিত পরিসংখ্যানগুলি তৈরি করতে কীভাবে এটি ব্যবহার করতে হয় তা নির্ধারণ করতে আমি অক্ষম ছিলাম। আমি এই পোস্টে এটি করার জন্য দরকারী খুঁজে পেয়েছি ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.