Jak ustawić rozmiar lokalnego obrazu za pomocą knitr dla markdown?
Mam lokalny obrazek, który chciałbym umieścić w pliku .Rmd
, który następnie knit
przekonwertuję na slajdy HTML za pomocą Pandoc
. Na ten post , to wstawi lokalny obrazek :![Image Title](path/to/your/image)
Czy istnieje sposób, aby zmodyfikować ten kod, aby również ustawić rozmiar obrazu?
8 answers
Możesz również odczytać obraz używając na przykład pakietu png
i narysować go jak zwykły Wykres używając grid.raster
z pakietu grid
.
```{r fig.width=1, fig.height=10,echo=FALSE}
library(png)
library(grid)
img <- readPNG("path/to/your/image")
grid.raster(img)
```
Dzięki tej metodzie masz pełną kontrolę nad rozmiarem obrazu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-17 14:54:27
[16]}pytanie jest stare, ale wciąż cieszy się dużą uwagą. Ponieważ istniejące odpowiedzi są nieaktualne, tutaj bardziej aktualne rozwiązanie:
Zmiana rozmiaru lokalnych obrazów
Od knitr
1.12, istnieje funkcja include_graphics
. Od ?include_graphics
(podkreślenie):
Główną zaletą korzystania z tej funkcji jest to, że jest przenośna w tym sensie, że działa dla wszystkich formatów dokumentów, które obsługuje
knitr
, więc nie musisz myśleć, jeśli musisz używać na przykład LaTeX lub składnia Markdown, aby osadzić zewnętrzny obraz. opcje częściowe związane z wyjściami graficznymi, które działają dla normalnych Wykresów R, również działają dla tych obrazów, takich jakout.width
iout.height
.
Przykład:
```{r, out.width = "400px"}
knitr::include_graphics("path/to/image.png")
```
Zalety:
- Over odpowiedź agastudy: nie ma potrzeby korzystania z zewnętrznych bibliotek ani ponownego rastrowania obrazu.
- Over Shruti Kapoor ' s answer: nie trzeba ręcznie pisać HTML. Poza tym obraz jest zawarty w samodzielnym Wersja pliku.
Łącznie z wygenerowanymi obrazami
Aby skomponować ścieżkę do wykresu, który jest wygenerowany w kawałku (ale nie jest dołączony), przydatne mogą być Opcje kawałka opts_current$get("fig.path")
(ścieżka do katalogu rysunku) oraz opts_current$get("label")
(Etykieta bieżącego kawałka). Poniższy przykład wykorzystuje fig.path
do włączenia drugiego z dwóch obrazów, które zostały wygenerowane (ale nie wyświetlone) w pierwszej części:
```{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")))
```
Ogólny wzór ścieżek rysunków to [fig.path]/[chunklabel]-[i].[ext]
, gdzie chunklabel
jest Etykieta fragmentu, w którym został wygenerowany Wykres, i
jest indeksem wykresu (w tym fragmencie), a {[14] } jest rozszerzeniem pliku (domyślnie {[15] } W dokumentach RMarkdown).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55
Un updated answer: in knitr 1.17
You can simply use
![Image Title](path/to/your/image){width=250px}
Edit zgodnie z komentarzem @ jsb
Uwaga działa tylko bez spacji, np. {width = 250px} nie {width = 250px}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-17 18:55:34
Oto kilka opcji, które utrzymują plik samowystarczalny bez retasteryzacji obrazu:
Owiń obraz w div
tagi
<div style="width:300px; height:200px">
![Image](path/to/image)
</div>
Użyj arkusza stylów
Test.Rmd
---
title: test
output: html_document
css: test.css
---
## Page with an image {#myImagePage}
![Image](path/to/image)
Test.css
#myImagePage img {
width: 400px;
height: 200px;
}
Jeśli masz więcej niż jeden obrazek, może być konieczne użycie pseudo-selektora NTH-child dla tej drugiej opcji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-21 19:23:25
Jeśli konwertujesz do HTML, możesz ustawić rozmiar obrazu używając składni HTML używając:
<img src="path/to/image" height="400px" width="300px" />
Lub jakąkolwiek wysokość i szerokość chcesz dać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-28 17:54:04
Miał dziś ten sam problem i znalazł inną opcję z knitr 1.16
podczas robienia na drutach PDF (co wymaga zainstalowania pandoc):
![Image Title](path/to/your/image){width=70%}
Ta metoda może wymagać przeprowadzenia prób i błędów, aby znaleźć rozmiar, który działa dla Ciebie. Jest to szczególnie wygodne, ponieważ sprawia, że umieszczanie dwóch obrazów obok siebie jest ładniejszym procesem. Na przykład:
![Image 1](path/to/image1){width=70%}![Image 2](path/to/image2){width=30%}
Możesz stać się kreatywny i układać kilka z nich obok siebie i dopasowywać je według własnego uznania. Zobacz też https://rpubs.com/RatherBit/90926 więcej pomysłów i przykładów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-08 08:35:13
Inną opcją, która mi się sprawdziła, jest gra z opcją dpi knitr::include_graphics()
w następujący sposób:
```{r}
knitr::include_graphics("path/to/image.png", dpi = 100)
```
... co na pewno (chyba, że robisz matematykę) jest metodą prób i błędów w porównaniu do definiowania wymiarów w kawałku, ale może to komuś pomoże.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-20 21:28:42
Rozwiązanie knitr:: include_graphics działało dobrze przy zmianie rozmiaru figur, ale nie byłem w stanie dowiedzieć się, jak użyć go do tworzenia obok siebie zmienionych figur. Znalazłem Ten post przydatny do tego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:19