Come impostare la dimensione per l’immagine locale usando knitr per il markdown?

Ho un’immagine locale che vorrei includere in un file .Rmd che poi .Rmd knit e convertirò in diapositive HTML con Pandoc . Per questo post , questo inserirà l’immagine locale:
![Image Title](path/to/your/image)

C’è un modo per modificare questo codice per impostare anche la dimensione dell’immagine?

Puoi anche leggere l’immagine usando il pacchetto png per esempio e tracciarla come un normale plot usando grid.raster dal pacchetto della grid .

 ```{r fig.width=1, fig.height=10,echo=FALSE} library(png) library(grid) img <- readPNG("path/to/your/image") grid.raster(img) ``` 

Con questo metodo hai il pieno controllo della dimensione della tua immagine.

La domanda è vecchia, ma riceve ancora molta attenzione. Poiché le risposte esistenti sono obsolete, ecco una soluzione più aggiornata:

Ridimensionamento delle immagini locali

A partire da knitr 1.12 , c’è la funzione include_graphics . Da ?include_graphics (enfasi mia):

Il vantaggio principale dell’utilizzo di questa funzione è che è portatile nel senso che funziona per tutti i formati di documento supportati da knitr , quindi non è necessario pensare se è necessario utilizzare, ad esempio, la syntax LaTeX o Markdown per incorporare un immagine esterna. Le opzioni Chunk relative all’output grafico che funzionano per i normali grafici R funzionano anche per queste immagini, come out.width e out.height .

Esempio:

 ```{r, out.width = "400px"} knitr::include_graphics("https://stackoverflow.com/questions/15625990/how-to-set-size-for-local-image-using-knitr-for-markdown/path/to/image.png") ``` 

vantaggi:

  • La risposta di Agastudy : nessuna necessità di librerie esterne o di rasterizzare l’immagine.
  • Risposta di Shruti Kapoor : Non è necessario scrivere manualmente HTML. Inoltre, l’immagine è inclusa nella versione autonoma del file.

Comprese le immagini generate

Per comporre il percorso di un opts_current$get("fig.path") generato in un blocco (ma non incluso), le opzioni del blocco opts_current$get("fig.path") (percorso per la directory delle figure) e opts_current$get("label") ( etichetta del pezzo corrente) può essere utile. L’esempio seguente utilizza fig.path per includere la seconda di due immagini che sono state generate (ma non visualizzate) nel primo blocco:

 ```{r generate_figures, fig.show = "hide"} library(knitr) plot(1:10, col = "green") plot(1:10, col = "red") ``` ```{r} include_graphics(sprintf("%sgenerate_figures-2.png", opts_current$get("fig.path"))) ``` 

Lo schema generale dei percorsi delle figure è [fig.path]/[chunklabel]-[i].[ext] chunklabel [fig.path]/[chunklabel]-[i].[ext] , dove chunklabel è l’etichetta del pezzo in cui è stata generata la trama, i è l’indice della trama (all’interno di questo blocco) ed ext è l’estensione del file (di default png nei documenti RMarkdown).

Una risposta aggiornata: in knitr 1.14 puoi semplicemente usare

 ![Image Title](path/to/your/image){width=250px} 

Ecco alcune opzioni che mantengono il file autonomo senza dover retrocedere l’immagine:

Avvolgi l’immagine nei tag div

 
![Image](https://stackoverflow.com/questions/15625990/how-to-set-size-for-local-image-using-knitr-for-markdown/path/to/image)

Usa un foglio di stile

test.Rmd

 --- title: test output: html_document css: test.css --- ## Page with an image {#myImagePage} ![Image](https://stackoverflow.com/questions/15625990/how-to-set-size-for-local-image-using-knitr-for-markdown/path/to/image) 

test.css

 #myImagePage img { width: 400px; height: 200px; } 

Se si dispone di più di un’immagine, potrebbe essere necessario utilizzare lo pseudo-selettore nth-child per questa seconda opzione.

Se stai convertendo in HTML, puoi impostare la dimensione dell’immagine usando la syntax HTML usando:

   

o qualunque altezza e larghezza vorreste dare.

La soluzione knitr :: include_graphics ha funzionato bene per ridimensionare le figure, ma non sono riuscito a capire come utilizzarlo per produrre figure ridimensionate affiancate. Ho trovato questo post utile per farlo.

Ho avuto lo stesso problema oggi e knitr 1.16 trovato un’altra opzione con knitr 1.16 quando si lavora a PDF (che richiede l’installazione di pandoc):

![Image Title](path/to/your/image){width=70%}

Questo metodo potrebbe richiedere un po ‘di tentativi ed errori per trovare la dimensione che funzioni per te. È particolarmente conveniente perché rende affiancate due immagini più belle. Per esempio:

![Image 1](https://stackoverflow.com/questions/15625990/how-to-set-size-for-local-image-using-knitr-for-markdown/path/to/image1){width=70%}![Image 2](https://stackoverflow.com/questions/15625990/how-to-set-size-for-local-image-using-knitr-for-markdown/path/to/image2){width=30%}

Puoi diventare creativo e impilare un paio di questi fianco a fianco e ridimensionarli come meglio credi. Vedi https://rpubs.com/RatherBit/90926 per ulteriori idee ed esempi.

Un’altra opzione che ha funzionato per me sta giocando con l’opzione dpi di knitr::include_graphics() questo modo:

 ```{r} knitr::include_graphics("https://stackoverflow.com/questions/15625990/how-to-set-size-for-local-image-using-knitr-for-markdown/path/to/image.png", dpi = 100) ``` 

… quale sicuro (a meno che tu non faccia matematica) è una prova ed un errore rispetto alla definizione di dimensioni nel blocco, ma forse aiuterà qualcuno.