(Rmarkdown) Positioning table and plot side by side
본 포스팅에서는 R 마크다운에서 Plot과 Table을 한 Row에 그리는 방법을 설명한다.
최종 결과는 다음과 같다.
Plot 다음에 Table이 아래로 나타내지않고 바로 옆에 그려주는 방법이다.
데이터는 iris 데이터를 사용했고,
왼쪽에 Plot은 X축은 Sepal.Length, Y축은 Sepal.Width인 2차원 Plot이다. 색은 Species로 나타냈다.
오른쪽 Table은 상위 5개에 해당하는 값이다.
최종 코드는 다음과 같다.
library(tidyverse)
library(ggplot2)
library(gridExtra)
library(grid)
library(xtable)
p1 <- iris %>%
ggplot() +
geom_point(aes(x = Sepal.Length, y = Sepal.Width, col = Species)) +
theme(legend.position = "none",
aspect.ratio=0.8)
dat <- head(iris,5)
colnames(dat) <- c("Sepal\nLength","Sepal\nWidth","Petal\nLength","Petal\nWidth","Species")
t1 <- tableGrob(dat, theme=ttheme_minimal(), rows=NULL)
grid.arrange(p1, t1, nrow=1)
p1에 Plot을 그려주고, t1에 table을 그려준 뒤 grid.arrange()로 합쳐서 하나로 그려준다.
nrow=1로 해주어야 한 행에 그릴 수 있다.
(Rmarkdown에서 plot과 table을 한 행에 그려주는데에는 html/css 문법을 직접 활용하여 div로 나눠주는 등 다양한 방법이 있지만
그와같은 방법은 for loop로 활용하기 어렵다.)
rmarkdown에서 for loop를 활용하는 방법은 이전에 포스팅해두었다.
2020.07.31 - [R/MarkDown] - [R Markdown] for loop로 chunk 여러개 만들기
plot의 크기는 theme에 aspect.ratio로 조정한다.
aspect.ratio는 x축과 y축의 비율을 의미한다.
아래 그래프에서 위 그래프는 ratio=0.8, 아래 그래프는 ratio=1.5로 설정했을 때 결과이다.
다음으로 table은 컬럼명을 두 줄로 조정해주었다.
이렇게 하지않으면 다음과 같이 컬럼명이 너무 길어서 table이 길어지게되고, plot과 겹치거나 오른쪽이 짤리는 결과가 나오게된다.
따라서 컬럼명을 \n로 두 줄로 만들어 칸 사이즈를 조절해주었다.
외에 글씨 사이즈는 ttheme_mininal()안에 base_size로 조절해 줄 수 있다. default값은 12이다.
tableGrob에 대한 자세한 파라미터들은 여기를 참고하면 된다.
'R > MarkDown' 카테고리의 다른 글
[R Markdown] Markdown, DT datatable, dygraph 기본 옵션 (0) | 2021.04.29 |
---|---|
[R Markdown] DT datatable in for loop showing white space after render to html (2) | 2021.04.29 |
[R Markdown] DT datatable 커스터마이징 :: 파라미터 알아보기 (2) | 2020.12.22 |
[R Markdown] for loop로 chunk 여러개 만들기 (5) | 2020.07.31 |
[R Markdown] toc customizing :: R 마크다운 목차 커스터마이징 (0) | 2019.12.23 |