Wstaw zdjęcie / tabelę w R Markdown

132

Więc chcę wstawić tabelę ORAZ obraz do R Markdown. W zwykłym dokumencie tekstowym mogę po prostu wstawić tabelę (5 wierszy na 2 kolumny), a do obrazu wystarczy skopiować i wkleić.

  1. Jak wstawić tabelę o wymiarach 5 wierszy na 2 kolumny (a także wpisywać do nich rzeczy) (a także dostosować tabelę pod kątem szerszej drugiej kolumny niż pierwsza)?

  2. Jak wstawić obrazek? Z mojego zrozumienia, powinienem najpierw zapisać obraz jako png, a następnie odnieść go do mojego dokumentu. Chcę też automatycznie dopasować zdjęcie do raportu, na przykład zajmując nie więcej niż jedną stronę lub mniej niż jedną stronę (czy istnieje sposób, aby dostosować rozmiar zdjęcia do własnych upodobań)?

  3. Jeśli ktoś wie coś fajnego / formatowania na temat R Markdown, czy możesz mi też powiedzieć? Wiem, #że to duży tytuł akapitu i ** **pogrubione rzeczy. To wszystko, co wiem!

user3784616
źródło
Dowiedziałem się, jak dodawać tabele! Wciąż zastanawiam się nad zdjęciami ._.
user3784616

Odpowiedzi:

152

Kilka witryn udostępnia rozsądne arkusze do ściągania lub HOWTO dla tabel i obrazów. Top na mojej liście to:

Zdjęcia są bardzo proste w użyciu, ale nie oferują możliwości dopasowania obrazu do strony (patrz Aktualizacja , poniżej). Aby dostosować właściwości obrazu (rozmiar, rozdzielczość, kolory, obramowanie itp.), Potrzebujesz jakiejś formy edytora obrazów. Uważam, że mogę zrobić wszystko, czego potrzebuję, z jednym z ImageMagick , GIMP lub InkScape , wszystkie darmowe i open source.

Aby dodać zdjęcie, użyj:

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

Wiem, że pandoc obsługuje PNG i JPG, co powinno spełnić większość Twoich potrzeb.

Masz kontrolę nad rozmiarem obrazu, jeśli tworzysz go w R (np. Wykres). Można to zrobić bezpośrednio w poleceniu tworzenia obrazu lub, jeszcze lepiej, za pomocą opcji, jeśli używasz knitr (wysoce zalecane ... sprawdź opcje fragmentów , szczególnie w sekcji Plots).

Zdecydowanie polecam przeczytanie tych samouczków; Markdown jest bardzo przydatny i ma wiele funkcji, których większość ludzi nie używa regularnie, ale naprawdę lubi, gdy się go nauczą. (SO niekoniecznie jest najlepszym miejscem do zadawania pytań, na które odpowiedzi są bardzo bezpośrednie w tych samouczkach).


Aktualizacja, 2019-sierpień-31

Jakiś czas temu pandocdodano „link_attributes” dla obrazów (najwyraźniej w 2015 r. Z zatwierdzeniem jgm / pandoc # 244cd56 ). „Zmiana rozmiaru obrazów” może być wykonana bezpośrednio. Na przykład:

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

Wymiary mogą być dostarczone bez jednostek (pikseli zakłada), albo z „ , , , i ”pxcmmmininch% (ref: https://pandoc.org/MANUAL.html , poszukiwania link_attributes).

(Nie jestem pewien, czy CommonMark to zaimplementował, chociaż była to długa dyskusja .)

r2evans
źródło
Jeśli nadal to czytasz, o zdjęciu. Czy mogę otworzyć plik Rmarkdown ponownie na innym komputerze bez obrazu? Czy zdjęcie jest trwałe po dodaniu go do R? Jeśli nie, jak to zrobić na stałe
user3784616
3
Plik nie jest trwały w .Rmdpliku. Jeśli „skompilujesz” go (używając pandoc) do HTML, dodanie zakoduje --self-containedobraz do pliku html. Pliki PDF i Word będą miały go jako część pliku, więc nie będziesz musiał dołączać rzeczywistego pliku PNG podczas wysyłania. Pliki Rmd wymagały jednak ręcznego dołączenia pliku obrazu.
r2evans
jak to działa..? Wydaje się, że nie mogę nawet dodać zdjęcia. Więc w zasadzie obraz nosi nazwę „Stawki zatrudnienia” i znajduje się w folderze z plikami o nazwie „Podsumowanie”. Lokalizacja pliku to C: \ Users \ Paul \ Desktop \ Summary. Więc kod, który napisałem to! [Stawki zatrudnienia.] (C: /Users/Paul/Desktop.Summary.png) i nie działa
user3784616
czy możesz mi podać przykład, jak używać - samodzielnego? Więc kiedy zapiszę go jako dokument Word, obraz będzie miał trwały? Nadal jestem trochę zdezorientowany
user3784616
Jeszcze lepiej, użycie go w nagłówku YAML Rmd jest prostsze (i najwyraźniej domyślne). Oto odniesienie: rmarkdown w rstudio . Ponad 1/3 drogi w dół to sekcja „Zależności dokumentów”, która dotyczy jej użycia.
r2evans
87

Aktualizacja : ponieważ odpowiedź od @ r2evans, znacznie łatwiej jest wstawiać obrazy do R Markdown i kontrolować rozmiar obrazu.

Zdjęcia

Książka bookdown robi wielką pracę wyjaśniając, że najlepszym sposobem na to jest za pomocą obrazów include_graphics(). Na przykład obraz o pełnej szerokości można wydrukować z podpisem poniżej:

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

Powód, dla którego ta metoda jest lepsza niż podejście pandoc ![your image](path/to/image):

  • Automatycznie zmienia polecenie na podstawie formatu wyjściowego (HTML / PDF / Word)
  • Ta sama składnia może być zastosowana do rozmiaru plot ( fig.width), szerokości wyjściowej w raporcie ( out.width), dodawania podpisów ( fig.cap) itp.
  • Wykorzystuje najlepsze urządzenia graficzne do wyjścia. Oznacza to, że obrazy PDF zachowują wysoką rozdzielczość.

Tabele

knitr::kable() to najlepszy sposób na uwzględnienie tabel w raporcie R Markdown, zgodnie z pełnym wyjaśnieniem tutaj . Ponownie, ta funkcja jest inteligentna w automatycznym wybieraniu prawidłowego formatowania dla wybranego wyjścia.

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

Jeśli chcesz tworzyć własne proste tabele w R Markdown i używasz R Studio, możesz sprawdzić insert_table pakiet . Zapewnia przejrzysty interfejs graficzny do tworzenia tabel.

Osiągnięcie niestandardowego stylu szerokości kolumn tabeli wykracza poza zakres knitr , ale kableExtrapakiet został napisany, aby to pomóc: https://cran.r-project.org/web/packages/kableExtra/index.html

Wskazówki dotyczące stylu

Plik Ściągawkę R Markdown jest nadal najlepszym miejscem, aby dowiedzieć się o najbardziej podstawową składnię można użyć.

Jeśli szukasz potencjalnych rozszerzeń do formatowania, bookdownpakiet również jest wart poznania. Zapewnia możliwość odsyłaczy, tworzenia specjalnych nagłówków i nie tylko: https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html

Michael Harper
źródło
Doskonałe rozwiązanie!
Marcus Nunes
Czy wiesz, jak zablokować lokalizację obrazu w miejscu? W tej chwili bardzo trudno jest przewidzieć, gdzie się pojawi po kompilacji.
wolfsatthedoor
1
Zmagałem się z ![image caption](\path\to\image.png)próbą wstawienia obrazu do R Markdown renderowanego .docx, ale zawiodłem w tajemniczy sposób, dopóki nie zobaczyłem knitr::include_graphics()dzisiaj rozwiązania. Dziękuję bardzo!
elarry
5

Jeśli chodzi o wstawianie obrazu, sugestia r2evansa dotycząca ![Caption for the picture.](/path/to/image.png) może być problematyczna, jeśli wymagane jest wyjście PDF.

Funkcja knitr include_graphics knitr::include_graphics('/path/to/image.png') jest bardziej przenośną alternatywą, która wygeneruje w Twoim imieniu przecenę najbardziej odpowiednią dla generowanego formatu wyjściowego.

ms609
źródło
Ciekawe ... dlaczego użycie ![caption](path/to/image.png)pliku PDF jest problematyczne, jeśli wymagane jest wyjście PDF? Być może ta odpowiedź jest nieaktualna (tak jak moja oryginalna odpowiedź), ale używam jej w pliku PDF co najmniej od kilku lat.
r2evans
4

W marcu zrobiłem prezentację talii w slidify, Rmarkdown za pomocą impress.js, która jest fajnym frameworkiem 3D. mój index.Rmdnagłówek wygląda jak

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

podkatalogi to:

/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

slajd z obrazem w tle fragment kodu znajdowałby się w moim .Rmd:

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

Pojawiły się pewne problemy od czasu, gdy ostatnio nad nim pracowałem (zdjęcia nie są już w tle, tekst jest zbyt duży na mojej działce R), ale działa dobrze na moim lokalnym. Kłopoty pojawiają się, gdy uruchamiam go na RPubach.

brigasnuncamais
źródło
2
Jeśli masz nowe pytanie, zadaj je, klikając przycisk Zadaj pytanie . Dołącz link do tego pytania, jeśli pomaga to w dostarczeniu kontekstu.
Jaap
8
to nie było pytanie, to była odpowiedź :-)
brigasnuncamais
2
Pierwszy link jest uszkodzony.
daknowles