แทรกรูปภาพ / ตารางใน R Markdown


135

ดังนั้นฉันต้องการแทรกตารางและรูปภาพลงใน R Markdown ในเอกสารคำปกติฉันสามารถแทรกตารางได้อย่างง่ายดาย (5 แถวโดย 2 คอลัมน์) และสำหรับรูปภาพเพียงแค่คัดลอกและวาง

  1. ฉันจะแทรกตาราง 5 แถวต่อ 2 คอลัมน์ได้อย่างไร (และพิมพ์สิ่งต่างๆลงไปด้วย) (และปรับตารางในแง่ของคอลัมน์ที่ 2 ให้กว้างกว่าตารางแรก) ได้อย่างไร

  2. ฉันจะแทรกรูปภาพได้อย่างไร จากความเข้าใจของฉันฉันควรบันทึกภาพเป็น png ก่อนจากนั้นอ้างอิงลงในเอกสารของฉัน นอกจากนี้ฉันต้องการปรับรูปภาพให้เป็นรายงานโดยอัตโนมัติเช่นไม่ต้องใช้เวลามากกว่าหนึ่งหน้าหรือน้อยกว่าหนึ่งหน้า (ฉันจะปรับขนาดของรูปภาพตามความต้องการของฉันได้ไหม)

  3. หากใครรู้อะไรเจ๋ง ๆ / การจัดรูปแบบเกี่ยวกับ R Markdown ช่วยแจ้งให้เราทราบด้วย? ฉันรู้ว่า#ตั้งชื่อเรื่องให้ใหญ่สำหรับย่อหน้าและเป็นตัว** **หนา นั่นคือทั้งหมดที่ฉันรู้!


ฉันค้นพบวิธีเพิ่มตารางแล้ว! ยังสงสัยเรื่องภาพ. _.
user3784616

คำตอบ:


154

เว็บไซต์หลายแห่งมีข้อมูลโกงหรือ HOWTO ที่เหมาะสมสำหรับตารางและรูปภาพ อันดับต้น ๆ ในรายการของฉันคือ:

รูปภาพใช้งานง่ายมาก แต่ไม่มีความสามารถในการปรับภาพให้พอดีกับหน้า (ดูอัปเดตด้านล่าง) ในการปรับคุณสมบัติของรูปภาพ (ขนาดความละเอียดสีเส้นขอบ ฯลฯ ) คุณจะต้องมีโปรแกรมแก้ไขรูปภาพบางรูปแบบ ฉันพบว่าฉันสามารถทำทุกอย่างที่ต้องการได้ด้วยImageMagick , GIMPหรือInkScapeซึ่งเป็นโอเพนซอร์สฟรีทั้งหมด

ในการเพิ่มรูปภาพให้ใช้:

![Caption for the picture.](/path/to/image.png)

ฉันรู้ว่า pandoc รองรับ PNG และ JPG ซึ่งตรงกับความต้องการของคุณมากที่สุด

คุณสามารถควบคุมขนาดภาพได้หากคุณสร้างใน R (เช่นพล็อต) สิ่งนี้สามารถทำได้โดยตรงในคำสั่งเพื่อสร้างภาพหรือดีกว่านั้นผ่านทางตัวเลือกหากคุณใช้เครื่องถัก (แนะนำเป็นอย่างยิ่ง ... ตรวจสอบตัวเลือกชิ้นส่วนโดยเฉพาะภายใต้พล็อต)

ฉันขอแนะนำอย่างยิ่งให้อ่านบทแนะนำเหล่านี้ markdown มีประโยชน์มากและมีคุณสมบัติมากมายที่คนส่วนใหญ่ไม่ได้ใช้เป็นประจำ แต่ชอบเมื่อได้เรียนรู้ (SO ไม่ใช่สถานที่ที่ดีที่สุดในการถามคำถามที่มีคำตอบโดยตรงในบทช่วยสอนเหล่านี้)


อัปเดต 2019-31 ส.ค.

เมื่อไม่นานมานี้ได้pandocรวม "link_attributes" ไว้สำหรับรูปภาพ (เห็นได้ชัดว่าในปี 2015 โดยมีการกระทำjgm / pandoc # 244cd56 ) "การปรับขนาดภาพ" ได้โดยตรง ตัวอย่างเช่น:

![unchanged image](foo.jpg)
![much-smaller image](foo.jpg){#id .class width=30 height=20px}
![half-size image](foo.jpg){#id .class width=50% height=50%}

ขนาดสามารถให้กับไม่มีหน่วย (พิกเซลสันนิษฐาน) หรือ" , , , และ"pxcmmmininch% (Ref: https://pandoc.org/MANUAL.htmlค้นหาlink_attributes)

(ฉันไม่แน่ใจว่า CommonMark ได้นำสิ่งนี้ไปใช้แม้ว่าจะมีการสนทนาที่ยาวนานก็ตาม)


หากคุณยังคงอ่านสิ่งนี้เกี่ยวกับรูปภาพ ฉันสามารถเปิดไฟล์ Rmarkdown อีกครั้งบนคอมพิวเตอร์เครื่องอื่นโดยไม่มีภาพได้หรือไม่? รูปภาพจะถาวรเมื่อฉันเพิ่มไปที่ R หรือไม่? ถ้าไม่ฉันจะทำให้ถาวรได้อย่างไร
user3784616

3
ไฟล์ไม่ถาวรภายใน.Rmdไฟล์ หากคุณ "คอมไพล์" (โดยใช้ pandoc) เป็น HTML การเพิ่ม--self-containedจะเข้ารหัสรูปภาพลงในไฟล์ html ไฟล์ PDF และ Word จะมีเป็นส่วนหนึ่งของไฟล์ดังนั้นคุณไม่จำเป็นต้องรวมไฟล์ PNG จริงเมื่อคุณส่งออก อย่างไรก็ตามไฟล์ Rmd คุณต้องรวมไฟล์ภาพด้วยตนเอง
r2evans

ทำงานอย่างไร .. ? ดูเหมือนจะเพิ่มรูปภาพไม่ได้ด้วยซ้ำ .. ดังนั้นโดยพื้นฐานแล้วรูปภาพจึงชื่อว่า "อัตราการจ้างงาน" และอยู่ในโฟลเดอร์ไฟล์ชื่อ "สรุป" ตำแหน่งของไฟล์คือ C: \ Users \ Paul \ Desktop \ Summary รหัสที่ฉันเขียนคือ! [อัตราการจ้างงาน] (C: /Users/Paul/Desktop.Summary.png) และใช้ไม่ได้
user3784616

คุณช่วยยกตัวอย่างวิธีใช้ - ที่มีอยู่ในตัวได้ไหม ดังนั้นเมื่อฉันบันทึกเป็น word doc มันจะมีภาพถาวรหรือไม่ ฉันยังสับสนเล็กน้อย
user3784616

ยังดีกว่าการใช้ภายในส่วนหัว YAML ของ Rmd นั้นตรงไปตรงมามากกว่า (และเห็นได้ชัดว่าเป็นค่าเริ่มต้น) นี่คือการอ้างอิง: rmarkdown ที่ rstudio มากกว่า 1/3 ของทางลงเป็นส่วน "การขึ้นต่อเอกสาร" ซึ่งระบุถึงการใช้งาน
r2evans

88

อัปเดต : เนื่องจากคำตอบจาก @ r2evans การแทรกรูปภาพลงใน R Markdown ทำได้ง่ายกว่ามากและควบคุมขนาดของรูปภาพ

ภาพ

หนังสือ bookdownไม่ได้งานที่ดีของการอธิบายว่าวิธีที่ดีที่สุดที่จะรวมภาพโดยใช้include_graphics()ไม่ได้งานที่ดีของการอธิบายว่าวิธีที่ดีที่สุดที่จะรวมภาพโดยใช้ตัวอย่างเช่นสามารถพิมพ์ภาพขนาดเต็มพร้อมคำบรรยายด้านล่าง:

```{r pressure, echo=FALSE, fig.cap="A caption", out.width = '100%'}
knitr::include_graphics("temp.png")
```

เหตุผลที่วิธีนี้ดีกว่าวิธีแพนด็อก ![your image](path/to/image) :

  • มันจะเปลี่ยนคำสั่งโดยอัตโนมัติตามรูปแบบผลลัพธ์ (HTML / PDF / Word)
  • สามารถใช้ไวยากรณ์เดียวกันกับขนาดของพล็อต ( fig.width) ความกว้างเอาต์พุตในรายงาน ( out.width) เพิ่มคำอธิบายภาพ (fig.cap ) เป็นต้น
  • ใช้อุปกรณ์กราฟิกที่ดีที่สุดสำหรับเอาต์พุต ซึ่งหมายความว่าภาพ PDF ยังคงมีความละเอียดสูง

ตาราง

knitr::kable()เป็นวิธีที่ดีที่สุดที่จะรวมตารางในรายงาน R Markdown ตามที่อธิบายไว้อย่างเต็มที่ที่นี่ อีกครั้งฟังก์ชั่นนี้ชาญฉลาดในการเลือกการจัดรูปแบบที่ถูกต้องสำหรับเอาต์พุตที่เลือกโดยอัตโนมัติ

```{r table}
knitr::kable(mtcars[1:5,, 1:5], caption = "A table caption")
```

หากคุณต้องการสร้างตารางง่ายๆของคุณเองใน R Markdown และกำลังใช้ R Studio คุณสามารถตรวจสอบinsert_table แพ็คเกจได้ มีอินเทอร์เฟซแบบกราฟิกที่เป็นระเบียบเรียบร้อยสำหรับการสร้างตาราง

การบรรลุสไตล์ที่กำหนดเองสำหรับความกว้างของคอลัมน์ตารางนั้นอยู่นอกเหนือขอบเขตknitrแต่ไฟล์kableExtraแพคเกจได้รับการเขียนขึ้นเพื่อช่วยให้บรรลุสิ่งนี้: https://cran.r-project.org/web/packages/kableExtra/index.html

เคล็ดลับสไตล์

แผ่นโกง R Markdownยังคงเป็นสถานที่ที่ดีที่สุดในการเรียนรู้เกี่ยวกับที่สุดไวยากรณ์พื้นฐานที่คุณสามารถใช้

หากคุณกำลังมองหาส่วนขยายที่เป็นไปได้สำหรับการจัดรูปแบบbookdownแพ็คเกจนี้ก็คุ้มค่าที่จะสำรวจ ให้ความสามารถในการอ้างอิงโยงสร้างส่วนหัวพิเศษและอื่น ๆ : https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html


ทางออกที่ยอดเยี่ยม!
Marcus Nunes

คุณรู้วิธีล็อคตำแหน่งภาพให้เข้าที่หรือไม่? ตอนนี้มันยากมากที่จะคาดเดาว่าจะปรากฏที่ใดเมื่อฉันรวบรวม
wolfsatthedoor

1
ฉันกำลังต่อสู้กับการ![image caption](\path\to\image.png)พยายามแทรกรูปภาพใน R Markdown ที่แสดงผล. docx แต่ล้มเหลวอย่างลึกลับจนกระทั่งฉันได้เห็นknitr::include_graphics()วิธีแก้ปัญหาของคุณในวันนี้ ขอบคุณมาก!
elarry

5

เมื่อพูดถึงการแทรกรูปภาพคำแนะนำของ r2evans ![Caption for the picture.](/path/to/image.png)อาจเป็นปัญหาได้หากต้องการเอาต์พุต PDF

ฟังก์ชัน Knitr include_graphics knitr::include_graphics('/path/to/image.png')เป็นทางเลือกที่พกพาได้มากกว่าซึ่งจะสร้างมาร์กดาวน์ที่เหมาะสมที่สุดกับรูปแบบเอาต์พุตที่คุณกำลังสร้างขึ้นในนามของคุณ


สงสัย ... เหตุใดการใช้งานจึง![caption](path/to/image.png)มีปัญหาหากต้องการเอาต์พุต PDF คำตอบนี้อาจล้าสมัย (เช่นเดียวกับคำตอบเดิมของฉัน) แต่ฉันใช้สิ่งนี้ในเอาต์พุต PDF เป็นเวลาอย่างน้อยสองสามปี
r2evans

4

ในเดือนมีนาคมฉันได้ทำการนำเสนอเด็คใน slidify, Rmarkdown ด้วยImpress.jsซึ่งเป็นเฟรมเวิร์ก 3 มิติที่ยอดเยี่ยม index.Rmdส่วนหัวของฉันดูเหมือน

---
title       : French TER (regional train) monthly regularity
subtitle    : since January 2013
author      : brigasnuncamais
job         : Business Intelligence / Data Scientist consultant
framework   : impressjs     # {io2012, html5slides, shower, dzslides, ...}
highlighter : highlight.js  # {highlight.js, prettify, highlight}
hitheme     : tomorrow      # 
widgets     : []            # {mathjax, quiz, bootstrap}
mode        : selfcontained # {standalone, draft}
knit        : slidify::knit2slides

subdirs คือ:

/assets /css    /impress-demo.css
        /fig    /unnamed-chunk-1-1.png (generated by included R code)
        /img    /SS850452.png (my image used as background)
        /js     /impress.js
        /layouts/custbg.html # content:--- layout: slide --- {{{ slide.html }}}
        /libraries  /frameworks /impressjs
                                /io2012
                    /highlighters   /highlight.js
                                    /impress.js
index.Rmd

สไลด์ที่มีรูปภาพในข้อมูลโค้ดพื้นหลังจะอยู่ใน. Rmd ของฉัน:

<div id="bg">
  <img src="assets/img/SS850452.png" alt="">
</div>  

ปัญหาบางอย่างเกิดขึ้นตั้งแต่ฉันทำงานกับมันครั้งล่าสุด (ไม่มีรูปภาพเป็นพื้นหลังอีกต่อไปแล้วข้อความมันใหญ่เกินไปในพล็อต R ของฉัน) แต่มันก็ใช้ได้ดีในพื้นที่ของฉัน ปัญหาเกิดขึ้นเมื่อฉันเปิดใช้งาน RPubs


2
หากคุณมีคำถามใหม่โปรดขอได้โดยคลิกที่ถามคำถามปุ่ม ใส่ลิงก์ไปยังคำถามนี้หากช่วยให้บริบท
Jaap

8
นี่ไม่ใช่คำถามนี่คือคำตอบ :-)
brigasnuncamais

2
ลิงค์แรกเสีย
daknowles
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.