이전글에서 소개했던 formattable 패키지의 사용법을 공유하고자 한다.
사용하는 목적은 R markdown으로 문서화하였을 때 Table자체에 시각적인 효과를 주고 싶기 때문이다.
🟦 formattable 란?
- data table을 보기 좋게 꾸며주는 패키지로 아래와 같은 시각화가 가능하다
🟦 기본 사용법
예제 데이터
Example <- data.frame(
ID = 1:6,
Gender = c("F", "M", "M", "M", "F", "M"),
Type = c("A", "A", "B", "B", "C", "C"),
Value = c( 10, 8, 4, 12, 10, 6),
Value2 = c(100, 200, 300, 50, 30, 20),
Log = c( F, T, T, T, T, F)
)
Example
🟦 응용
일단 기본구조는 아래와 같다.
formattable(list(column1 = 꾸미기1,
column2 = 꾸미기 2)
)
이를 위의 데이터에 적용해 보자
Numeric data 꾸미기
Example %>% formattable(
list(
ID = color_tile("transparent", "#FFCCCC"),
Value = color_bar("lightblue"),
Value2 = color_text("black", "red"))
) %>% as.datatable()
- color_tile()은 각 numeric값에 따라 cell의 농도를 달리 해주고
- color_bar()은 각 numeric값에 따라 열에 따른 상대값을 바로 나타내준다
- color_text()는 값에 따라 글자의 색 농도를 변환해 준다.
이러한 간단한 함수는 오직 numeric데이터에만 적용되는 것이 단점이다.
그러면 factor로 취급되는 데이터는 어떻게 시각화를 하는가
Factor data 꾸미기
나머지 Gender, Type, Log값을 시각화 해보자
Gender는 글자의 색을 변환시켜 주자!
font_color <- formatter("span", style = x ~ style(color = c("orange","lightgreen")))
Example %>% formattable(
list(
ID = color_tile("transparent", "#FFCCCC"),
Gender = font_color,
Value = color_bar("lightblue"),
Value2 = color_text("black", "red"))
)
) %>% as.datatable()
만약 저렇게 꾸밀 값이 두개라면 굳이 if함수로 지정해주지 않아도 색을 지정할 수 있다
만약 Type같이 총 3개의 값을 꾸밀 때는 어떻게 할까?
font_color <- formatter("span", style = x ~ style(color = c("orange","lightgreen")))
icon <- formatter("span", style = x ~ icontext(ifelse(x=="A", "star", ifelse(x=="B", "star"), "star" ), x))
Example %>% formattable(
list(
ID = color_tile("transparent", "#FFCCCC"),
Gender = font_color,
Type = icon,
Value = color_bar("lightblue"),
Value2 = color_text("black", "red"))
)
) %>% as.datatable()
저 '★'은 패키지 안에 icontext를 이용하여 나타낼 수 있습니다.
3개를 지정하기 위해서는 if else구조를 이용해서 지정 가능하며 ★말고 👍,👎 등의 이모지도 사용가능하다ㅎㅎ
가이드를 보니 https://getbootstrap.com/docs/3.4/components/#glyphicons 여기서 마음에 드는것을 고르면 될 듯하다
마지막으로 논리값을 꾸며보자
논리값은 cell의 배경색을 바꾸어 보자
font_color <- formatter("span", style = x ~ style(color = c("orange","lightgreen")))
icon <- formatter("span", style = x ~ icontext(ifelse(x=="A", "star", ifelse(x=="B", "star"), "star" ), x))
color_bar_factor <- formatter("span",
style = function(x) style(
color = "white",
background = c("orange","lightgreen")[factor(as.character(x))]))
Example %>% formattable(
list(
ID = color_tile("transparent", "#FFCCCC"),
Gender = font_color,
Type = icon,
Log = color_bar_factor,
Value = color_bar("lightblue"),
Value2 = color_text("black", "red")
)
) %>% as.datatable()
배경색을 바꾸기 위해 background = c("orange","lightgreen") 를 변경하고 글씨체를 color = "white"로 변경하였다
이야 완성본을 보니 심란하다..
그래도 좀 더 여러 패키지를 활용한다면 아래와 같이 깔끔한 시각화도 가능하다
다음에는 reactable패키지를 알아보자
reactable패키지는 아래와 같은 이미지로 매우 유명하다.
아래는 조바이든의 지지도를 나타낸 그래프이다.
🟦 참고
https://danbi-ncsoft.github.io/works/2020/08/21/works-econ_index_2.html
https://www.littlemissdata.com/blog/prettytables