2.4 그림
기본적으로 knitr로 생성되어 출력되는 그림에는 캡션이 없습니다. 즉, R 코드에서 생성된 위치에 배치됩니다. 다음은 그러한 예입니다.
par(mar = c(4, 4, 0.1, 0.1))
plot(pressure, pch = 19, type = "b")
이런 식으로 그림을 편집하는데에 따르는 단점은 현재 페이지에 그림을 배치하기에 충분한 공간이 없을 때 페이지 하단에 도달하거나 (따라서 페이지 여백을 초과 함) 현재 페이지 하단에 큰 흰색 여백을 남기면서 다음 페이지로 밀릴 수 있다는 것입니다. 이것이 기본적으로 LaTeX에 “플로팅 환경”이 있는 이유입니다.
여러 페이지로 나눌 수 없는 요소(그림과 같이)는 플로팅 환경에 배치되어 충분한 공간이 있는 페이지로 플로팅할 수 있습니다. 하지만 앞뒤로 떠 다니는 단점도 있습니다. 즉, 독자는 현재 페이지에 언급된 그림을 찾기 위해 다른 페이지로 이동해야 함을 의미합니다. 이것은 고정된 크기의 여러 페이지에 항목을 조판해야 하는 자연스러운 결과입니다.
그러나 이 문제는 HTML에는 존재하지 않습니다. 모든 것이 하나의 단일 페이지에 연속적으로 배치 될 수 있고 (아마도 무한한 높이로) 동일한 페이지 크기의 여러 페이지에 어떤 것도 분할할 필요가 없기 때문입니다.
chunk 옵션 fig.cap
을 통해 코드 청크에 그림 캡션을 할당하면 R 플롯이 그림 환경에 배치되고 자동으로 라벨이 지정되고, 번호가 지정되며, 상호 참조될 수도 있습니다. 그림 환경의 라벨은 코드 청크의 라벨에서 생성됩니다. 예를 들어 청크 라벨이 ‘foo
’인 경우 그림 라벨은’fig:foo
‘가됩니다(접두사’fig:
‘가’foo
’앞에 추가됨). 그림을 참조하려면\ @ref (label)
7 구문을 사용합니다. 여기서 label
은 그림 라벨입니다. 예 : fig:foo
.
그림 캡션 내에서 마크 다운 형식을 활용하려면 텍스트 참조를 사용해야 합니다 (2.2.4 섹션 참조 ). 예를 들어, 출력 형식이 LaTeX/PDF 인 경우 ‘_italic text_
’가 포함된 그림 캡션은 LaTeX에서 밑줄이 특수 문자이므로 작동하지 않지만 텍스트 참조를 사용하는 경우, 출력이 LaTeX 일 때 코드일 때’_italic text_
’는 LaTeX로 변환됩니다.
코드 청크에서 생성된 그림이나 표를 상호 참조하려면 청크 라벨에 영숫자문자(a-z, A-Z, 0-9), 슬래시 (/) 또는 대시 (-) 만 포함되어 있는지 확인하십시오. 밑즐(
-
)은 사용할 수 없습니다.
청크 옵션 fig.asp
는 플롯의 종횡비, 즉 그림 높이/너비의 비율을 설정하는 데 사용할 수 있습니다. 그림 너비가 6 인치 (fig.width = 6
)이고, fig.asp = 0.7
인 경우, 그림의 높이는 fig.width * fig.asp = 6 * 0.7 = 4.2
에 의해 자동으로 계산됩니다. 그림 2.1은 아래 코드로 생성된 청크 옵션 fig.asp = 0.7
,fig.width = 6
그리고 fig.align = 'center'
을 사용한 예입니다:
par(mar = c(4, 4, 0.1, 0.1))
plot(pressure, pch = 19, type = "b")
플롯의 실제 크기는 청크 옵션 fig.width
와 fig.height
(그래픽 장치에서 생성된 플롯의 크기)에 의해 결정되며, 청크 옵션 out.width
및 out.height
을 통해 플롯의 출력 크기를 지정할 수 있습니다. 이 두 옵션의 가능한 값은 문서의 출력 형식에 따라 다릅니다. 예를 들어 out.width = '30%'
는 HTML 출력에 유효한 값이지만 LaTeX/PDF 출력에는 유효하지 않습니다. 그러나 knitr는 x%
형식의 out.width
에 대한 백분율 값을 (x / 100) \linewidth
로 자동 변환합니다. 예를 들어 out.width = '70%'
는 출력 형식이 LaTeX 인 경우 .7\linewidth
로 처리됩니다. 이를 통해 일관된 방식으로 플롯의 상대적 너비를 지정할 수 있습니다. 그림 2.2은 out.width = 70%
의 예입니다.
par(mar = c(4, 4, 0.1, 0.1))
plot(cars, pch = 19)
하나의 그림 환경에 여러 플롯을 배치하려면 fig.show ='hold'
청크 옵션을 사용하여 코드 청크에서 여러 플롯을 보유하고 하나의 환경에 포함해야 합니다. 모든 플롯의 너비의 합이 현재 선 너비보다 작거나 같은 경우 플롯을 나란히 배치할 수도 있습니다. 예를 들어 두 플롯의 너비가 ’50%’인 경우 나란히 배치됩니다. 마찬가지로 out.width = '33%'
를 지정하여 3 개의 플롯을 한 줄에 배열할 수 있습니다. 그림 2.3는 각각 너비가 ’50%’인 2 개 플롯을 보여주는 예입니다.
par(mar = c(4, 4, 0.1, 0.1))
plot(pressure, pch = 19, type = "b")
plot(cars, pch = 19)
때때로 R 코드에서 생성되지 않은 특정 이미지가 있을 수 있으며 knitr::include_graphics()
함수를 통해 R Markdown에 포함할 수 있습니다. 그림 2.4는 그림 환경에 포함된 세 개의 knitr 로고의 예입니다. 하나 또는 여러 개의 이미지 경로를 include_graphics()
함수에 전달할 수 있으며, 일반 R 플롯에 적용되는 모든 청크 옵션도 이러한 이미지에 적용됩니다. 예를 들어 출력 문서에서 out.width = '33%'
를 사용하여 이러한 이미지의 너비를 설정할 수 있습니다. .
::include_graphics(rep("images/search_console/knit-logo.png", 3)) knitr
include_graphics()
를 사용하면 몇 가지 이점이 있습니다.
- 문서 출력 형식에 대해 걱정할 필요가 없습니다. 예를 들어 출력 형식이 LaTeX인 경우 LaTeX 명령
\includegraphics{}
를 사용하여 이미지를 포함할 수 있으며, 출력 형식이 Markdown 인 경우![]()
를 사용해야 합니다. knitr의 함수include_graphics()
는 이러한 세부 사항을 자동으로 처리합니다. - 이미지 속성을 제어하는 구문은 R 코드에서 이미지를 생성할 때와 동일합니다. 예를 들어 청크 옵션
fig.cap
,out.width
와fig.show
는 여전히 동일한 의미를 갖습니다. include_graphics()
는 출력 형식이 LaTeX이고 PDF 그래픽 파일이 있을 때 자동으로 PDF 그래픽을 사용할 수 있을 만큼 똑똑합니다. 예를 들어 이미지 경로foo/bar.png
는foo/bar.pdf
로 자동 대체될 수 있습니다. PDF 이미지는 종종 LaTeX/PDF 출력에서 래스터 이미지보다 품질이 더 좋습니다. 이 기능을 사용하려면 인수auto_pdf = TRUE
를 설정하거나 전역 옵션options(knitr.graphics.auto_pdf = TRUE)
를 설정하여 R 세션에서 이 기능을 전역적으로 활성화합니다.- 동일한 비율을 사용하여 이러한 이미지의 비율을 쉽게 조정할 수 있습니다. 이는 기본적으로 청크 옵션
dpi
에서 값을 가져 오는dpi
(dpi, dot per inch 인치당 도트 수) 인수를 통해 수행 할 수 있습니다. 숫자 값이고 청크 옵션out.width
가 설정되지 않은 경우 이미지의 출력 너비는 실제 너비 (픽셀)를dpi
로 나눈 값이되고 단위는 인치가 됩니다. 예를 들어 크기가 672 x 480 인 이미지의 경우 출력 너비는dpi = 96
일 때 7 인치 (7in
)가 됩니다. 이 기능을 사용하려면 png 그리고/또는 jpeg 패키지가 설치되어 있어야 합니다. 청크 옵션out.width
에NULL
이 아닌 값을 제공하거나include_graphics(dpi = NA)
를 사용하여 항상 (인치로) 너비의 자동 계산을 재정의 할 수 있습니다.
선행 백 슬래시(
\
)를 잊지 마세요! 또한ref
뒤에있는 괄호()
에 유의하십시오. 중괄호{}
가 아닙니다↩︎