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")
A figure example with the specified aspect ratio, width, and alignment.

Figure 2.1: A figure example with the specified aspect ratio, width, and alignment.

플롯의 실제 크기는 청크 옵션 fig.widthfig.height (그래픽 장치에서 생성된 플롯의 크기)에 의해 결정되며, 청크 옵션 out.widthout.height을 통해 플롯의 출력 크기를 지정할 수 있습니다. 이 두 옵션의 가능한 값은 문서의 출력 형식에 따라 다릅니다. 예를 들어 out.width = '30%'는 HTML 출력에 유효한 값이지만 LaTeX/PDF 출력에는 유효하지 않습니다. 그러나 knitrx%형식의 out.width에 대한 백분율 값을 (x / 100) \linewidth로 자동 변환합니다. 예를 들어 out.width = '70%'는 출력 형식이 LaTeX 인 경우 .7\linewidth로 처리됩니다. 이를 통해 일관된 방식으로 플롯의 상대적 너비를 지정할 수 있습니다. 그림 2.2out.width = 70%의 예입니다.

par(mar = c(4, 4, 0.1, 0.1))
plot(cars, pch = 19)
A figure example with a relative width 70%.

Figure 2.2: A figure example with a relative width 70%.

하나의 그림 환경에 여러 플롯을 배치하려면 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)
Two plots placed side by side.Two plots placed side by side.

Figure 2.3: Two plots placed side by side.

때때로 R 코드에서 생성되지 않은 특정 이미지가 있을 수 있으며 knitr::include_graphics()함수를 통해 R Markdown에 포함할 수 있습니다. 그림 2.4는 그림 환경에 포함된 세 개의 knitr 로고의 예입니다. 하나 또는 여러 개의 이미지 경로를 include_graphics() 함수에 전달할 수 있으며, 일반 R 플롯에 적용되는 모든 청크 옵션도 이러한 이미지에 적용됩니다. 예를 들어 출력 문서에서 out.width = '33%'를 사용하여 이러한 이미지의 너비를 설정할 수 있습니다. .

knitr::include_graphics(rep("images/search_console/knit-logo.png", 3))
Three knitr logos included in the document from an external PNG image file.Three knitr logos included in the document from an external PNG image file.Three knitr logos included in the document from an external PNG image file.

Figure 2.4: Three knitr logos included in the document from an external PNG image file.

include_graphics()를 사용하면 몇 가지 이점이 있습니다.

  1. 문서 출력 형식에 대해 걱정할 필요가 없습니다. 예를 들어 출력 형식이 LaTeX인 경우 LaTeX 명령 \includegraphics{}를 사용하여 이미지를 포함할 수 있으며, 출력 형식이 Markdown 인 경우 ![]()를 사용해야 합니다. knitr의 함수 include_graphics()는 이러한 세부 사항을 자동으로 처리합니다.
  2. 이미지 속성을 제어하는 구문은 R 코드에서 이미지를 생성할 때와 동일합니다. 예를 들어 청크 옵션 fig.cap,out.widthfig.show는 여전히 동일한 의미를 갖습니다.
  3. include_graphics()는 출력 형식이 LaTeX이고 PDF 그래픽 파일이 있을 때 자동으로 PDF 그래픽을 사용할 수 있을 만큼 똑똑합니다. 예를 들어 이미지 경로 foo/bar.pngfoo/bar.pdf로 자동 대체될 수 있습니다. PDF 이미지는 종종 LaTeX/PDF 출력에서 래스터 이미지보다 품질이 더 좋습니다. 이 기능을 사용하려면 인수 auto_pdf = TRUE를 설정하거나 전역 옵션 options(knitr.graphics.auto_pdf = TRUE)를 설정하여 R 세션에서 이 기능을 전역적으로 활성화합니다.
  4. 동일한 비율을 사용하여 이러한 이미지의 비율을 쉽게 조정할 수 있습니다. 이는 기본적으로 청크 옵션 dpi에서 값을 가져 오는 dpi(dpi, dot per inch 인치당 도트 수) 인수를 통해 수행 할 수 있습니다. 숫자 값이고 청크 옵션 out.width가 설정되지 않은 경우 이미지의 출력 너비는 실제 너비 (픽셀)를 dpi로 나눈 값이되고 단위는 인치가 됩니다. 예를 들어 크기가 672 x 480 인 이미지의 경우 출력 너비는 dpi = 96 일 때 7 인치 (7in)가 됩니다. 이 기능을 사용하려면 png 그리고/또는 jpeg 패키지가 설치되어 있어야 합니다. 청크 옵션out.widthNULL이 아닌 값을 제공하거나 include_graphics(dpi = NA)를 사용하여 항상 (인치로) 너비의 자동 계산을 재정의 할 수 있습니다.

  1. 선행 백 슬래시(\)를 잊지 마세요! 또한ref 뒤에있는 괄호()에 유의하십시오. 중괄호{}가 아닙니다↩︎