Bild / Tabelle in R Markdown einfügen


131

Also möchte ich eine Tabelle UND ein Bild in R Markdown einfügen. In einem normalen Word-Dokument kann ich einfach eine Tabelle einfügen (5 Zeilen mal 2 Spalten) und für das Bild einfach kopieren und einfügen.

  1. Wie füge ich eine Tabelle mit 5 Zeilen mal 2 Spalten ein (und tippe auch Inhalte ein) (und passe die Tabelle auch so an, dass die 2. Spalte breiter als die erste ist)?

  2. Wie füge ich ein Bild ein? Nach meinem Verständnis sollte ich das Bild zuerst als PNG speichern und dann in meinem Dokument referenzieren. Außerdem möchte ich das Bild automatisch an den Bericht anpassen, z. B. nicht mehr als eine Seite oder weniger als eine Seite. (Gibt es eine Möglichkeit, die Größe des Bildes nach meinen Wünschen anzupassen?)

  3. Wenn jemand etwas Cooles / Formatierendes über R Markdown weiß, kannst du es mich auch wissen lassen? Ich weiß, #dass dies einen großen Titel für einen Absatz ** **ergibt und Dinge mutig macht. Das ist ungefähr alles, was ich weiß!


Ich habe herausgefunden, wie man Tabellen hinzufügt! Ich wundere mich immer noch über Bilder ._.
user3784616

Antworten:


151

Mehrere Websites bieten angemessene Spickzettel oder HOWTOs für Tabellen und Bilder. Top auf meiner Liste sind:

Bilder sind sehr einfach zu verwenden, bieten jedoch nicht die Möglichkeit, das Bild an die Seite anzupassen (siehe Update unten). Zum Anpassen der Bildeigenschaften (Größe, Auflösung, Farben, Rahmen usw.) benötigen Sie eine Art Bildeditor. Ich finde, ich kann alles, was ich brauche, mit ImageMagick , GIMP oder InkScape tun , alles kostenlos und Open Source.

Verwenden Sie zum Hinzufügen eines Bildes:

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

Ich weiß, dass Pandoc PNG und JPG unterstützt, die die meisten Ihrer Anforderungen erfüllen sollten.

Sie haben die Kontrolle über die Bildgröße, wenn Sie sie in R erstellen (z. B. ein Plot). Dies kann entweder direkt im Befehl zum Erstellen des Bildes oder, noch besser, über Optionen erfolgen, wenn Sie Knitr verwenden (sehr zu empfehlen ... siehe Chunk-Optionen , insbesondere unter Plots).

Ich empfehle dringend, diese Tutorials zu lesen. Markdown ist sehr praktisch und hat viele Funktionen, die die meisten Leute nicht regelmäßig nutzen, aber wirklich mögen, wenn sie es einmal gelernt haben. (SO ist nicht unbedingt der beste Ort, um Fragen zu stellen, die in diesen Tutorials sehr direkt beantwortet werden.)


Update, 31.08.2019

Vor einiger Zeit pandoc"link_attributes" für Bilder aufgenommen (anscheinend im Jahr 2015 mit Commit jgm / pandoc # 244cd56 ). Das Ändern der Bildgröße kann direkt erfolgen. Beispielsweise:

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

Die Abmessungen können ohne Einheiten bereitgestellt werden (Pixel angenommen wird ), oder mit „ , , , und “pxcmmmininch% (Ref: https://pandoc.org/MANUAL.html , suchen link_attributes).

(Ich bin nicht sicher, ob CommonMark dies implementiert hat, obwohl es eine lange Diskussion gab .)


Wenn Sie dies noch lesen, über das Bild. Kann ich die Rmarkdown-Datei ohne Bild erneut auf einem anderen Computer öffnen? Ist das Bild dauerhaft, wenn ich es zu R hinzufüge? Wenn nicht, wie ich es dauerhaft machen kann
user3784616

3
Die Datei ist nicht permanent in der .RmdDatei. Wenn Sie es (mit Pandoc) in HTML "kompilieren", --self-containedwird das Bild durch Hinzufügen in die HTML-Datei codiert. PDF- und Word-Dateien enthalten diese Datei, sodass Sie beim Versenden nicht die eigentliche PNG-Datei angeben müssen. Für RMD-Dateien mussten Sie die Bilddatei jedoch manuell einfügen.
R2evans

wie funktioniert es..? Ich kann nicht einmal scheinen, das Bild hinzuzufügen. Im Grunde heißt das Bild "Beschäftigungsquoten" und befindet sich in einem Dateiordner namens "Zusammenfassung". Der Speicherort der Datei lautet C: \ Users \ Paul \ Desktop \ Summary. Der Code, den ich geschrieben habe, lautet also! [Beschäftigungsquoten.] (C: /Users/Paul/Desktop.Summary.png) und funktioniert nicht
user3784616

Können Sie mir ein Beispiel geben, wie man das in sich geschlossene verwendet? Wenn ich es also als Word-Dokument speichere, hat es das Bild dauerhaft? Ich bin immer noch ein bisschen verwirrt
user3784616

Besser noch, die Verwendung im YAML-Header des Rmd ist einfacher (und anscheinend die Standardeinstellung). Hier ist die Referenz: rmarkdown bei rstudio . Über 1/3 des Weges nach unten befindet sich ein Abschnitt über "Dokumentabhängigkeiten", der sich mit seiner Verwendung befasst.
R2evans

86

Update : Seit der Antwort von @ r2evans ist es viel einfacher, Bilder in R Markdown einzufügen und die Größe des Bildes zu steuern.

Bilder

Das Bookdown-Buch erklärt hervorragend, dass der beste Weg, Bilder aufzunehmen, die Verwendung von ist include_graphics(). Beispielsweise kann ein Bild in voller Breite mit der folgenden Beschriftung gedruckt werden:

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

Der Grund, warum diese Methode besser ist als der Pandoc-Ansatz ![your image](path/to/image):

  • Der Befehl wird automatisch basierend auf dem Ausgabeformat (HTML / PDF / Word) geändert.
  • Dieselbe Syntax kann für die Größe des Plots ( fig.width), die Ausgabebreite im Bericht ( out.width), das Hinzufügen von Untertiteln ( fig.cap) usw. verwendet werden.
  • Es werden die besten grafischen Geräte für die Ausgabe verwendet. Dies bedeutet, dass PDF-Bilder eine hohe Auflösung haben.

Tabellen

knitr::kable()Dies ist der beste Weg, um Tabellen in einen R-Markdown-Bericht aufzunehmen, wie hier ausführlich erläutert . Auch diese Funktion ist intelligent bei der automatischen Auswahl der richtigen Formatierung für die ausgewählte Ausgabe.

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

Wenn Sie Ihre eigenen einfachen Tabellen in R Markdown insert_table erstellen möchten und R Studio verwenden, können Sie das Paket auschecken . Es bietet eine übersichtliche grafische Oberfläche zum Erstellen von Tabellen.

Das Erreichen eines benutzerdefinierten Stils der Tabellenspaltenbreite liegt außerhalb des Bereichs von knitr, aber das kableExtraPaket wurde geschrieben, um dies zu erreichen: https://cran.r-project.org/web/packages/kableExtra/index.html

Style-Tipps

Der R Markdown-Spickzettel ist immer noch der beste Ort, um mehr über die grundlegende Syntax zu erfahren, die Sie verwenden können.

Wenn Sie nach möglichen Erweiterungen der Formatierung suchen, bookdownlohnt es sich auch , das Paket zu erkunden. Es bietet die Möglichkeit, Querverweise zu erstellen, spezielle Header zu erstellen und vieles mehr: https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html


Hervorragende Lösung!
Marcus Nunes

Wissen Sie, wie Sie den Bildspeicherort fixieren können? Im Moment ist es sehr schwer vorherzusagen, wo es erscheinen wird, wenn ich es kompiliere.
Wolfsatthedoor

1
Ich habe mit dem ![image caption](\path\to\image.png)Versuch gerungen, ein Bild in R Markdown, gerendert .docx, einzufügen, bin aber auf mysteriöse Weise gescheitert, bis ich knitr::include_graphics()heute Ihre Lösung gesehen habe. Ich danke dir sehr!
Elarry

5

Beim Einfügen eines Bildes kann der Vorschlag von r2evans ![Caption for the picture.](/path/to/image.png)problematisch sein, wenn eine PDF-Ausgabe erforderlich ist.

Die knitr-Funktion include_graphics knitr::include_graphics('/path/to/image.png') ist eine portablere Alternative, die in Ihrem Namen den Abschlag generiert, der für das von Ihnen generierte Ausgabeformat am besten geeignet ist.


Neugierig ... warum ist die Verwendung ![caption](path/to/image.png)problematisch, wenn eine PDF-Ausgabe erforderlich ist? Vielleicht ist diese Antwort veraltet (wie meine ursprüngliche Antwort), aber ich verwende sie zumindest seit ein paar Jahren in der PDF-Ausgabe.
R2evans

4

Im März habe ich eine Deck - Präsentation in slidify, Rmarkdown mit Impress.js , die ein coolen 3D - Framework ist. Mein index.RmdHeader sieht aus wie

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

Unterverzeichnisse sind:

/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

Eine Folie mit Bild im Hintergrundcode-Snippet befindet sich in meiner .Rmd:

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

Einige Probleme sind aufgetreten, seit ich das letzte Mal daran gearbeitet habe (Fotos sind nicht mehr im Hintergrund, Text zu groß auf meinem R-Plot), aber es funktioniert gut auf meinem lokalen. Probleme treten auf, wenn ich es auf RPubs laufen lasse.


2
Wenn Sie eine neue Frage haben, fragen Sie es bitte durch Klicken Frage stellen Taste. Fügen Sie einen Link zu dieser Frage hinzu, wenn dies zur Bereitstellung des Kontexts beiträgt.
Jaap

8
Dies war keine Frage, dies war eine Antwort :-)
Brigasnuncamais

2
Der erste Link ist unterbrochen.
Daknowles
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.