Masukkan gambar / tabel dalam R Markdown

132

Jadi saya ingin memasukkan tabel DAN gambar ke R Markdown. Dalam dokumen word biasa saya dapat dengan mudah memasukkan tabel (5 baris dengan 2 kolom), dan untuk gambar cukup salin dan tempel.

  1. Bagaimana cara menyisipkan tabel baris 5 dengan 2 kolom (dan juga mengetikkan barang ke dalamnya) (dan juga menyesuaikan tabel dalam hal kolom ke-2 menjadi lebih luas dari yang pertama)?

  2. Bagaimana cara saya menyisipkan gambar? Dari pemahaman saya, saya pertama-tama harus menyimpan gambar sebagai png, kemudian merujuknya ke dokumen saya. Juga, saya ingin menyesuaikan gambar secara otomatis dengan laporan, seperti tidak mengambil lebih dari satu halaman, atau kurang dari satu halaman. (Apakah ada cara bagi saya untuk menyesuaikan ukuran gambar sesuai keinginan saya)?

  3. Jika ada yang tahu sesuatu yang keren / memformat tentang R Markdown bisakah Anda juga memberi tahu saya? Saya tahu itu #membuat judul besar untuk paragraf, dan ** **berani. Itulah semua yang saya tahu!

pengguna3784616
sumber
Saya menemukan cara menambahkan tabel! Masih bertanya-tanya tentang gambar ._.
user3784616

Jawaban:

152

Beberapa situs menyediakan lembar cheat atau HOWTO yang masuk akal untuk tabel dan gambar. Yang teratas dalam daftar saya adalah:

Gambar sangat mudah digunakan tetapi tidak menawarkan kemampuan untuk menyesuaikan gambar agar sesuai dengan halaman (lihat Perbarui , di bawah). Untuk menyesuaikan properti gambar (ukuran, resolusi, warna, batas, dll), Anda memerlukan beberapa bentuk editor gambar. Saya menemukan saya dapat melakukan semua yang saya butuhkan dengan ImageMagick , GIMP , atau InkScape , semuanya gratis dan open source.

Untuk menambahkan gambar, gunakan:

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

Saya tahu pandoc mendukung PNG dan JPG, yang seharusnya memenuhi sebagian besar kebutuhan Anda.

Anda memiliki kendali atas ukuran gambar jika Anda membuatnya dalam R (misalnya, plot). Ini dapat dilakukan baik secara langsung dalam perintah untuk membuat gambar atau, bahkan lebih baik, melalui opsi jika Anda menggunakan knitr (sangat disarankan ... lihat opsi chunk , khususnya di bawah Plot).

Saya sangat merekomendasikan membaca tutorial ini; penurunan harga sangat berguna dan memiliki banyak fitur yang kebanyakan orang tidak gunakan secara teratur tetapi sangat suka sekali mereka mempelajarinya. (SO belum tentu tempat terbaik untuk mengajukan pertanyaan yang dijawab secara langsung dalam tutorial ini.)


Pembaruan, 2019-Agustus-31

Beberapa waktu lalu, pandocdimasukkan "link_attributes" untuk gambar (tampaknya pada tahun 2015, dengan commit jgm / pandoc # 244cd56 ). "Mengubah ukuran gambar" dapat dilakukan secara langsung. Sebagai contoh:

![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%}

Dimensi dapat diberikan tanpa unit (piksel diasumsikan), atau dengan " , , , dan "pxcmmmininch% (ref: https://pandoc.org/MANUAL.html , mencari link_attributes).

(Saya tidak yakin bahwa CommonMark telah menerapkan ini, meskipun ada diskusi yang panjang .)

r2evans
sumber
Jika Anda masih membaca ini, tentang gambar. Bisakah saya membuka file Rmarkdown lagi di komputer lain tanpa gambar? Apakah gambar itu permanen setelah saya tambahkan ke R? Jika tidak bagaimana saya membuatnya permanen
user3784616
3
File tidak permanen di dalam .Rmdfile. Jika Anda "kompilasi" (menggunakan pandoc) ke HTML, menambahkan --self-containedakan meng-encode gambar ke dalam file html. File PDF dan Word akan memilikinya sebagai bagian dari file, jadi Anda tidak perlu menyertakan file PNG yang sebenarnya saat Anda mengirimkannya. Namun, file Rmd mengharuskan Anda untuk memasukkan file gambar secara manual.
r2evans
bagaimana cara kerjanya..? Saya bahkan tidak bisa menambahkan gambar .. Jadi pada dasarnya gambar itu bernama "Tingkat Pekerjaan" dan itu ada di folder file yang disebut "Ringkasan". Lokasi file adalah C: \ Users \ Paul \ Desktop \ Summary. Jadi kode yang saya tulis adalah! [Tingkat Pekerjaan.] (C: /Users/Paul/Desktop.Summary.png) dan tidak berfungsi
user3784616
dapatkah Anda memberi saya contoh cara menggunakan --self-contained? Jadi ketika saya menyimpannya sebagai kata doc itu akan permanen memiliki gambar? Saya masih sedikit bingung
user3784616
Lebih baik lagi, menggunakannya dalam header YAML dari Rmd lebih lurus (dan default, tampaknya). Inilah rujukannya: rmarkdown di rstudio . Lebih dari 1/3 dari jalan turun adalah bagian tentang "Ketergantungan Dokumen" yang membahas penggunaannya.
r2evans
87

Pembaruan : karena jawaban dari @ r2evans, jauh lebih mudah untuk memasukkan gambar ke dalam R Markdown dan mengontrol ukuran gambar.

Gambar-gambar

The book bookdown melakukan pekerjaan yang besar menjelaskan bahwa cara terbaik untuk memasukkan gambar adalah dengan menggunakan include_graphics(). Misalnya, gambar lebar penuh dapat dicetak dengan teks di bawah ini:

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

Alasan metode ini lebih baik daripada pendekatan pandoc ![your image](path/to/image):

  • Secara otomatis mengubah perintah berdasarkan format output (HTML / PDF / Word)
  • Sintaks yang sama dapat digunakan untuk ukuran plot ( fig.width), lebar output dalam laporan ( out.width), tambahkan keterangan ( fig.cap) dll.
  • Ini menggunakan perangkat grafis terbaik untuk output. Ini berarti gambar PDF tetap beresolusi tinggi.

Tabel

knitr::kable()adalah cara terbaik untuk memasukkan tabel dalam laporan R Markdown seperti dijelaskan sepenuhnya di sini . Sekali lagi, fungsi ini cerdas secara otomatis memilih format yang benar untuk output yang dipilih.

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

Jika Anda ingin membuat tabel sederhana Anda sendiri di R Markdown dan menggunakan R Studio, Anda dapat memeriksa insert_table paketnya . Ini menyediakan antarmuka grafis yang rapi untuk membuat tabel.

Mencapai gaya kustom dari lebar kolom tabel di luar cakupan knitr, tetapi kableExtrapaket telah ditulis untuk membantu mencapai ini: https://cran.r-project.org/web/packages/kableExtra/index.html

Tips Gaya

The R penurunan harga contekan masih tempat terbaik untuk belajar tentang yang paling sintaks dasar yang dapat Anda gunakan.

Jika Anda mencari ekstensi potensial untuk pemformatan, bookdownpaket ini juga perlu ditelusuri. Ini memberikan kemampuan untuk referensi silang, membuat tajuk khusus dan banyak lagi: https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html

Michael Harper
sumber
Solusi yang sangat baik!
Marcus Nunes
Apakah Anda tahu cara mengunci lokasi gambar di tempat? Saat ini sangat sulit untuk memprediksi di mana itu akan muncul ketika saya mengkompilasinya.
wolfsatthedoor atau
1
Saya bergumul dengan ![image caption](\path\to\image.png)mencoba memasukkan gambar ke dalam R Markdown yang diberikan .docx, tetapi gagal secara misterius, sampai saya melihat knitr::include_graphics()solusi Anda hari ini. Terima kasih banyak!
elarry
5

Ketika datang untuk memasukkan gambar, saran r2evans tentang ![Caption for the picture.](/path/to/image.png)bisa menjadi masalah jika output PDF diperlukan.

Fungsi knitr include_graphics knitr::include_graphics('/path/to/image.png') adalah alternatif yang lebih portabel yang akan menghasilkan, atas nama Anda, penurunan harga yang paling sesuai dengan format output yang Anda hasilkan.

ms609
sumber
Penasaran ... mengapa penggunaan ![caption](path/to/image.png)bermasalah jika output PDF diperlukan? Mungkin jawaban ini sudah usang (seperti jawaban asli saya), tapi saya sudah menggunakan ini dalam output PDF setidaknya untuk beberapa tahun.
r2evans
4

Pada bulan Maret saya membuat presentasi dek di slidify, Rmarkdown dengan impress.js yang merupakan kerangka 3D keren. index.Rmdheader saya terlihat seperti

---
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 adalah:

/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

slide dengan gambar dalam cuplikan kode latar belakang akan ada di .Rmd saya:

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

Beberapa masalah muncul sejak saya terakhir kali mengerjakannya (foto tidak lebih di latar belakang, teks terlalu besar pada plot R saya) tetapi berfungsi dengan baik di lokal saya. Masalah muncul saat saya menjalankannya di RPubs.

brigasnuncamais
sumber
2
Jika Anda memiliki pertanyaan baru, silakan tanyakan dengan mengklik tombol Ajukan Pertanyaan . Sertakan tautan ke pertanyaan ini jika itu membantu menyediakan konteks.
Jaap
8
ini bukan pertanyaan, ini adalah jawaban :-)
brigasnuncamais
2
Tautan pertama terputus.
daknowles