그림
Quarto는 그림과 하위그림 작업을 쉽게 하고, 여러 그림·표·기타 콘텐츠를 패널에 배치할 수 있는 다양한 기능을 제공합니다.
그림 기본
Pandoc 마크다운에서는 캡션이 달린 이미지가 단독 단락으로 등장하면 그림이 생성됩니다. 예를 들어 다음과 같습니다.
이는 출력 형식마다 다음과 같이 표시됩니다.
| HTML | Word | |
|---|---|---|
![]() |
![]() |
![]() |
LaTeX / PDF 출력에서는 그림이 자동으로 번호가 붙습니다(다른 형식에서도 그림 번호가 필요하면 상호 참조를 사용하세요).
그림 크기 조절
기본적으로 그림은 실제 크기로 표시되며, 렌더링되는 페이지의 폭 제한만 적용됩니다. 표시 크기를 바꾸려면 그림에 width, height 속성을 추가합니다.
{width=300}width만 지정하면 height는 자동 계산됩니다. 기본 동작을 바꾸고 싶다면 명시적으로 height를 지정하세요.
width, height의 기본 단위는 픽셀입니다. 백분율이나 인치, 밀리미터 같은 단위도 사용할 수 있습니다.
{width=80%}
{width=4in}링크된 그림
Quarto로 렌더링할 때 그림을 링크로 감싸도 캡션이 있는 그림으로 처리됩니다.
[](https://en.wikipedia.org/wiki/Elephant)그림 정렬
기본 정렬은 가운데입니다. 다른 정렬을 사용하려면 fig-align 속성을 추가하세요.
{fig-align="left"}긴 캡션을 고려해 캡션 텍스트는 기본적으로 왼쪽 정렬입니다.
대체 텍스트
fig-alt 속성으로 그림에 대체 텍스트를 추가할 수 있습니다. 예를 들어 다음 마크다운은…
{fig-alt="코끼리 그림."}… 다음 HTML을 생성합니다.
<img src="elephant.png" alt="코끼리 그림.">캡션, 제목, 대체 텍스트는 서로 다르게 지정할 수 있습니다. 예를 들어 다음 코드는…
{fig-alt="코끼리 그림."}… 다음 HTML을 생성합니다.
<img src="elephant.png" title="Title: An elephant" alt="코끼리 그림.">캡션 대신 대체 텍스트를 렌더링하려면 Pandoc 문서에 설명된 것처럼 줄 끝에 백슬래시를 추가합니다.
\다중 형식 그림
대상 출력 형식에 따라 다른 이미지 파일 형식을 제공할 수도 있습니다. 확장자를 생략하면 됩니다.
기본적으로 elephant.png를 찾지만 PDF로 렌더링할 때는 elephant.pdf를 찾습니다. default-image-extension 옵션으로 이 동작을 조정할 수 있습니다.
format:
html:
default-image-extension: svg
pdf:
default-image-extension: tex라이트박스 그림
HTML 출력에서는 이미지를 클릭해 더 크게 볼 수 있도록 라이트박스 스타일과 동작을 추가할 수 있습니다. 아래 이미지는 라이트박스를 적용한 예시입니다(이미지를 클릭해 확인해 보세요).
이미지에 .lightbox 클래스를 추가하면 됩니다.
{.lightbox}더 많은 정보와 다양한 활성/비활성화 방법은 라이트박스 그림을 참고하세요.
여러 매개변수 적용
여러 속성을 조합할 때는 공백으로 구분합니다.
{fig-alt="코끼리 그림." fig-align="left" width=20%}상호 참조
fig- 접두사가 붙은 ID를 추가하면 그림을 상호 참조할 수 있으며, 본문에서는 @ 접두사로 참조합니다.
{#fig-elephant}
이는 @fig-elephant 에서 잘 볼 수 있습니다.실행 가능한 코드 셀에서 생성한 그림은 fig- 접두사가 붙은 label을 추가하면 상호 참조할 수 있습니다.
선형 플롯 예시는 @fig-line-plot 을 확인하세요.
```{python}
#| label: fig-line-plot
#| fig-cap: "A line plot "
import matplotlib.pyplot as plt
plt.plot([1,23,2,4])
plt.show()
```그림을 상호 참조하려면 레이블이 반드시 fig-로 시작해야 합니다.
추가 정보는 상호 참조 문서를 참고하세요.
하위그림
여러 그림을 하나의 그룹으로 표시하려면 그림을 div로 감싸면 됩니다.
::: {#fig-elephants layout-ncol=2}
{#fig-surus}
{#fig-hanno}
Famous Elephants
:::마지막 문단이 주 캡션 역할을 하고, 각 그림이 서브캡션을 가집니다. HTML 렌더링 결과는 다음과 같습니다.

그림 사이(또는 마지막 그림과 캡션 사이)에 빈 줄이 있어야 각 이미지가 별도 단락으로 인식됩니다.
또한 layout-ncol 속성을 사용해 2열 레이아웃을 지정했습니다. 다음 섹션에서는 레이아웃 사용자 지정을 더 자세히 살펴봅니다.
그림 패널
위에서는 서브캡션과 주 캡션을 가진 그림 두 개를 나란히 배치했습니다. 캡션 처리 여부, 여러 행 사용 여부 등은 자유롭게 선택할 수 있습니다.
두 그림 각각에만 캡션을 달고 주 캡션은 제거하려면 #fig 식별자와 마지막 캡션을 삭제하세요.
::: {layout-ncol=2}


:::
캡션을 완전히 제거할 수도 있습니다.
::: {layout-ncol=2}


:::여러 행
이미지가 2개 이상이면 여러 행으로 배치하고 싶을 수 있습니다. layout-nrow 속성을 사용하면 됩니다.
::: {layout-nrow=2}




:::
열 구성이 행마다 달라지는 등 더 복잡한 레이아웃도 가능합니다. 자세한 내용은 아래 사용자 정의 레이아웃을 참고하세요.
그림 Div
#fig- 접두사가 붙은 Pandoc div 블록으로 감싸면 임의의 마크다운 콘텐츠도 그림으로 취급할 수 있습니다. 예를 들어 다음은 iframe을 포함한 그림입니다.
::: {#fig-elephant}
<iframe width="560" height="315" src="https://www.youtube.com/embed/SNggmeilXDQ"></iframe>
Elephant
:::div 블록의 마지막 문단이 그림 캡션으로 사용됩니다.
LaTeX 그림
이 섹션은 LaTeX 출력 전용 옵션을 다룹니다.
아래에서 설명하는 fig-env, fig-pos 옵션을 사용하면 LaTeX 플로팅 환경(대개 \begin{figure})이 생성됩니다. 이 LaTeX가 생성되는 위치(예: 다른 \begin{figure} 내부)에 따라 잘못된 LaTeX가 될 수도 있으므로, 이러한 속성은 문서 최상위 이미지에서만 사용하는 것이 안전합니다.
환경
일부 LaTeX 패키지는 사용자 정의 그림 환경을 제공합니다. 예컨대 2단 구성에서는 figure* 환경을 사용하면 두 단을 모두 차지합니다. 사용할 환경을 fig-env 속성으로 지정할 수 있습니다.
{#fig-elephant fig-env="figure*"}
::: {#fig-elephant-2 fig-env="figure*"}

Another elephant.
:::그림 위치
기본 LaTeX figure는 플로팅 환경이므로 실제 위치는 크기와 주변 콘텐츠에 따라 달라집니다. fig-pos 옵션으로 이를 어느 정도 제어할 수 있습니다. fig-pos는 figure 환경에 전달되는 배치 지정자입니다. 아래 LaTeX 조각에서 ht 부분이 fig-pos입니다.
\begin{figure}[ht]
\end{figure}fig-pos는 문서 수준, 실행 코드 블록 옵션, 마크다운 속성 어디에든 지정할 수 있습니다. 아래 예시에서는 세 가지 방법을 모두 보여 줍니다.
---
title: "My Document"
format:
pdf:
fig-pos: 'h'
---
```{python}
#| fig-pos: 't'
```
{fig-pos='b'}LaTeX 그림 위치에 대한 자세한 내용은 이 글을 참고하세요.
실행 가능한 코드 블록이 그림을 생성했고 코드가 출력에 포함되어 있다면(echo: true) 기본적으로 fig-pos가 H로 설정되어 코드와 그림을 함께 유지하려고 합니다. 다른 경우에는 명시적으로 fig-pos를 지정하지 않는 한 LaTeX 기본 배치가 사용됩니다.
짧은 캡션
fig-scap 옵션으로 “그림 목록”에 사용될 짧은 캡션을 지정할 수 있습니다. 실행 코드 블록 옵션이나 이미지 속성에 지정하세요.
```{python}
#| fig-cap: "Long caption"
#| fig-scap: "Short caption"
```
{fig-scap='Short caption'}PGF/TikZ 그래픽
LaTeX 출력 시 .tex 파일을 참조하는 마크다운 이미지는 PGF/TikZ 벡터 그래픽으로 간주해 올바른 LaTeX를 자동으로 생성합니다.

{width=80%}LaTeX 출력은 다음과 같습니다.
\input{image1.tex}
\resizebox{0.8\linewidth}{!}{\input{image2.tex}}위 예시처럼 width, height 백분율은 자동으로 \linewidth 비율로 변환됩니다. 필요하면 \resizebox의 인자로 직접 LaTeX 값을 지정할 수 있습니다.
캡션 위치
기본적으로 그림 캡션은 그림 아래에 표시됩니다. HTML과 PDF에서는 fig-cap-location 옵션으로 위치를 변경할 수 있습니다.
---
fig-cap-location: top
---여러 형식에서 공유할 수 있도록 최상위에서 지정했습니다. 단일 형식만 대상이라면 해당 형식 옵션과 함께 둘 수 있습니다.
가능한 값은 다음과 같습니다.
| 값 | 설명 |
|---|---|
top |
캡션을 그림 위에 배치합니다. |
bottom |
캡션을 그림 아래에 배치합니다. |
margin |
캡션을 여백에 배치합니다. |
여백에 캡션을 배치하는 방법은 문서 레이아웃을 참고하세요.
사용자 정의 레이아웃
위 예시에서는 layout-ncol, layout-nrow 속성으로 동일한 너비의 단순한 레이아웃을 만들었습니다. layout 속성을 사용하면 훨씬 복잡한 배치를 만들 수 있습니다.
다음 예시는 첫 번째 행에 두 개의 동일한 그림, 두 번째 행에 전체 폭을 차지하는 그림 하나를 배치합니다.
::: {layout="[[1,1], [1]]"}



:::
layout 속성은 2차원 배열이며 첫 번째 차원은 행, 두 번째 차원은 열을 정의합니다. 위 예시의 "[[1,1], [1]]"은 첫 번째 행에 동일한 두 열, 두 번째 행에 단일 열을 배치하라는 의미입니다.
행마다 합이 일정할 필요는 없습니다. 가장 자연스러운 비율을 사용하면 됩니다. 예를 들어 행 내 열의 비율을 백분율처럼 지정할 수 있습니다.
::: {layout="[[70,30], [100]]"}



:::음수 값을 사용하면 요소 사이에 여백을 만들 수 있습니다.
::: {layout="[[40,-20,40], [100]]"}



:::
세로 정렬
서로 다른 높이의 이미지를 한 행에 배치하는 경우 layout-valign 속성으로 세로 정렬을 제어할 수 있습니다.
::: {layout="[15,-2,10]" layout-valign="bottom"}


:::
세로 정렬은 이미지에만 국한되지 않으며 패널에 포함된 다른 요소에도 적용할 수 있습니다.
계산 결과
실행 가능한 코드 블록이 생성한 그림은 자동으로 문서에 포함됩니다. label, fig-cap, fig-link 옵션으로 ID, 캡션, 링크를 설정하고, fig-align, fig-alt 등 다른 속성도 같은 이름의 청크 옵션으로 지정합니다.
계산형 그림의 기본 크기는 문서 헤더의 fig-width, fig-height 옵션으로 제어할 수 있습니다. 자세한 내용은 실행 옵션: 그림 옵션을 참고하세요.
레이아웃
실행 코드 블록이 만든 그림에도 레이아웃 속성이 적용됩니다. 아래는 Jupyter와 Knitr 예시입니다.
```{python}
#| layout-ncol: 2
#| fig-cap:
#| - "Line Plot 1"
#| - "Line Plot 2"
import matplotlib.pyplot as plt
plt.plot([1,23,2,4])
plt.show()
plt.plot([8,65,23,90])
plt.show()
```
```{r}
#| layout-ncol: 2
#| fig-cap:
#| - "Speed and Stopping Distances of Cars"
#| - "Vapor Pressure of Mercury as a Function of Temperature"
plot(cars)
plot(pressure)
```
위 예시에서는 fig-cap 옵션으로 각 그림에 캡션을 적용했습니다.
서브캡션
fig-cap와 fig-subcap 옵션을 조합하면 계산형 출력에 서브캡션을 만들 수 있습니다. 캡션을 적용할 때 fig- 접두사가 있는 label을 함께 지정하면 그림에 번호가 붙고 상호 참조할 수 있습니다.
```{python}
#| label: fig-charts
#| fig-cap: "Charts"
#| fig-subcap:
#| - "First"
#| - "Second"
#| layout-ncol: 2
import matplotlib.pyplot as plt
plt.plot([1,23,2,4])
plt.show()
plt.plot([8,65,23,90])
plt.show()
```
```{r}
#| label: fig-charts
#| fig-cap: "Charts"
#| fig-subcap:
#| - "Cars"
#| - "Pressure"
#| layout-ncol: 2
plot(cars)
plot(pressure)
```
사용자 정의 레이아웃
layout 속성은 Knitr와 Jupyter 모두에서 동일하게 작동합니다. 예를 들어 다음 Rmd 코드는 3개의 플롯을 생성하고 사용자 정의 레이아웃을 지정합니다.
```{r}
#| layout: [[45,-10, 45], [100]]
plot(cars)
plot(pressure)
plot(mtcars)
```
블록 레이아웃
앞의 예시는 그림 배치에 초점을 맞췄지만, 레이아웃 속성은 어떤 블록 콘텐츠에도 사용할 수 있습니다. 예를 들어 두 개의 목록을 나란히 배치할 수 있습니다.
::: {layout-ncol=2}
### List One
- Item A
- Item B
- Item C
### List Two
- Item X
- Item Y
- Item Z
:::제목은 자동으로 뒤따르는 블록과 결합되므로 결과적으로 2개의 열이 생성됩니다. 다음은 제목 없이 단락과 목록을 나란히 배치한 예시입니다.
::: {layout-ncol=2}
- Item X
- Item Y
- Item Z
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur gravida eu erat et fring. Morbi congue augue vel eros ullamcorper, eget convallis tortor sagittis. Fusce sodales viverra mauris a fringilla. Donec feugiat, justo eu blandit placerat, enim dui volutpat turpis, eu dictum lectus urna eu urna. Mauris sed massa ornare, interdum ipsum a, semper massa.
:::복잡한 콘텐츠를 배치할 때는 div(:::)로 블록을 나누세요. 다음은 코드 블록과 텍스트, 그림을 나란히 배치한 예시입니다.
:::: {layout="[ 40, 60 ]"}
::: {#first-column}
```r
# Some code
```
Some text that should be laid out below the code
:::
::: {#second-column}

:::
::::#first-column, #second-column 같은 ID 속성은 필수는 아니지만 가독성을 높여 줍니다.



