Inserir imagem / tabela no R Markdown

132

Então, eu quero inserir uma tabela E uma imagem no R Markdown. No documento normal do Word, posso inserir facilmente uma tabela (5 linhas por 2 colunas) e, para a figura, basta copiar e colar.

  1. Como insiro uma tabela de 5 linhas por 2 colunas (e também digito itens nelas) (e também ajusto a tabela em termos de que a segunda coluna seja mais larga que a primeira)?

  2. Como insiro uma imagem? Pelo meu entendimento, devo primeiro salvar a imagem como png e depois referenciá-la no meu documento. Além disso, desejo ajustar automaticamente a imagem ao relatório, como não ocupar mais que uma página ou menos que uma página (existe uma maneira de ajustar o tamanho da foto ao meu gosto)?

  3. Se alguém souber algo legal / formatação sobre o R Markdown, você também pode me avisar? Sei que isso cria #um grande título para um parágrafo e ** **coloca as coisas em negrito. Isso é tudo o que sei!

user3784616
fonte
Eu descobri como adicionar tabelas! Ainda me perguntando sobre fotos ._.
user3784616

Respostas:

152

Vários sites fornecem planilhas ou HOWTOs razoáveis ​​para tabelas e imagens. No topo da minha lista estão:

As imagens são muito simples de usar, mas não oferecem a capacidade de ajustar a imagem para caber na página (consulte Atualização , abaixo). Para ajustar as propriedades da imagem (tamanho, resolução, cores, borda, etc), você precisará de algum tipo de editor de imagem. Acho que posso fazer tudo o que preciso com um dos ImageMagick , GIMP ou InkScape , todos gratuitos e de código aberto.

Para adicionar uma imagem, use:

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

Sei que o pandoc suporta PNG e JPG, o que deve atender à maioria das suas necessidades.

Você tem controle sobre o tamanho da imagem se a estiver criando em R (por exemplo, um gráfico). Isso pode ser feito diretamente no comando para criar a imagem ou, melhor ainda, por meio de opções se você estiver usando o knitr (altamente recomendado ... confira as opções de blocos , especificamente em Plots).

Eu recomendo vivamente lendo estes tutoriais; a remarcação é muito útil e possui muitos recursos que a maioria das pessoas não usa regularmente, mas realmente gosta quando a aprende. (SO não é necessariamente o melhor lugar para fazer perguntas que são respondidas muito diretamente nesses tutoriais.)


Atualização, 2019-ago-31

Algum tempo atrás, pandocincorporou "link_attributes" para imagens (aparentemente em 2015, com commit jgm / pandoc # 244cd56 ). O "redimensionamento de imagens" pode ser feito diretamente. Por exemplo:

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

As dimensões podem ser fornecidas sem unidades (pixels assumido), ou com " , , , e "pxcmmmininch% (ref: https://pandoc.org/MANUAL.html , procurar link_attributes).

(Não tenho certeza de que o CommonMark tenha implementado isso, embora tenha havido uma longa discussão .)

r2evans
fonte
Se você ainda está lendo isso, sobre a imagem. Posso abrir o arquivo Rmarkdown novamente em outro computador sem a foto? A imagem é permanente quando a adiciono ao R? Se não for como eu torná-lo permanente
user3784616
3
O arquivo não é permanente dentro do .Rmdarquivo. Se você "compilar" (usando pandoc) para HTML, a adição --self-containedcodificará a imagem no arquivo html. Os arquivos PDF e Word o incluirão como parte do arquivo; portanto, você não precisará incluir o arquivo PNG real quando o enviar. Arquivos Rmd, no entanto, exigiram que você incluísse o arquivo de imagem manualmente.
R2evans
como funciona..? Não consigo nem adicionar a foto. Então, basicamente, a foto é chamada "Taxas de emprego" e está em uma pasta de arquivo chamada "Resumo". O local do arquivo é C: \ Users \ Paul \ Desktop \ Summary. Assim, o código que eu escrevi é [Emprego Rates.] (C: /Users/Paul/Desktop.Summary.png) e ele não funciona!
user3784616
você pode me dar um exemplo de como usar o - self-contains? Então, quando eu salvá-lo como uma palavra doc, ele ficará com a imagem permanente? Eu ainda estou um pouco confuso
user3784616
Melhor ainda, usá-lo no cabeçalho YAML do Rmd é mais direto (e o padrão, aparentemente). Aqui está a referência: rmarkdown at rstudio . Mais de 1/3 do caminho abaixo, há uma seção sobre "Dependências de documentos", que aborda seu uso.
R2evans 6/08
87

Atualização : como a resposta do @ r2evans, é muito mais fácil inserir imagens no R Markdown e controlar o tamanho da imagem.

Imagens

O livro de anotações explica muito bem que a melhor maneira de incluir imagens é usando include_graphics(). Por exemplo, uma imagem de largura total pode ser impressa com uma legenda abaixo:

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

A razão pela qual esse método é melhor que a abordagem pandoc ![your image](path/to/image):

  • Altera automaticamente o comando com base no formato de saída (HTML / PDF / Word)
  • A mesma sintaxe pode ser usada para o tamanho do gráfico ( fig.width), a largura de saída no relatório ( out.width), adicionar legendas ( fig.cap) etc.
  • Ele usa os melhores dispositivos gráficos para a saída. Isso significa que as imagens em PDF permanecem em alta resolução.

Tabelas

knitr::kable()é a melhor maneira de incluir tabelas em um relatório R Markdown, conforme explicado completamente aqui . Novamente, essa função é inteligente ao selecionar automaticamente a formatação correta para a saída selecionada.

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

Se você deseja criar suas próprias tabelas simples no R Markdown e está usando o R Studio, pode verificar o insert_table pacote . Ele fornece uma interface gráfica organizada para a criação de tabelas.

A obtenção de um estilo personalizado da largura da coluna da tabela está além do escopo knitr, mas o kableExtrapacote foi escrito para ajudar a conseguir isso: https://cran.r-project.org/web/packages/kableExtra/index.html

Dicas de estilo

A folha de dicas do R Markdown ainda é o melhor lugar para aprender sobre a maioria das sintaxes básicas que você pode usar.

Se você estiver procurando por possíveis extensões para a formatação, bookdowntambém vale a pena explorar o pacote. Ele fornece a capacidade de fazer referência cruzada, criar cabeçalhos especiais e muito mais: https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html

Michael Harper
fonte
Excelente solução!
Marcus Nunes
Você sabe como bloquear o local da imagem no lugar? No momento, é muito difícil prever onde ele aparecerá quando eu o compilar.
wolfsatthedoor
1
Eu estava lutando com a ![image caption](\path\to\image.png)tentativa de inserir uma imagem no R Markdown renderizada .docx, mas falhei misteriosamente, até que vi sua knitr::include_graphics()solução hoje. Muito obrigado!
Elarry 03/10/19
5

Quando se trata de inserir uma imagem, a sugestão de r2evans ![Caption for the picture.](/path/to/image.png)pode ser problemática se for necessária uma saída em PDF.

A função knitr include_graphics knitr::include_graphics('/path/to/image.png') é uma alternativa mais portátil que gerará, em seu nome, a margem mais apropriada ao formato de saída que você está gerando.

ms609
fonte
Curioso ... por que o uso de ![caption](path/to/image.png)problemático se a saída em PDF é necessária? Talvez essa resposta esteja desatualizada (como foi a minha resposta original), mas eu a uso na saída de PDF há alguns anos, pelo menos.
r2evans 13/01
4

Em março, fiz uma apresentação de deck no slidify, Rmarkdown com impress.js, que é uma estrutura 3D bacana. meu index.Rmdcabeçalho parece

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

subdiretórios são:

/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

um slide com imagem no snippet de código em segundo plano estaria no meu .Rmd:

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

Alguns problemas apareceram desde a última vez que trabalhei nele (as fotos não estão mais em segundo plano, o texto é muito grande no meu enredo R), mas funciona bem no meu local. Os problemas surgem quando eu o executo nos RPubs.

brigasnuncamais
fonte
2
Se você tiver uma nova pergunta, faça-o clicando no botão Fazer pergunta . Inclua um link para esta pergunta se ela ajudar a fornecer contexto.
21415 Jaap
8
esta não era uma pergunta, esta foi uma resposta :-)
brigasnuncamais
2
O primeiro link está quebrado.
daknowles