반응형
R 로 벤다이어그램을 그려보자 VennDiagram 패키지
어떠한 두 그룹의 교차되는 부분의 규모를 표현할 때, 벤다이어그램은 매우 효과적인 방법입니다. 벤다이어그램을 그리기 위해 파워포인트, Keynote 같은 프로그램을 이용할 수 있습니다. 하지만, 실제 수치를 반영해서 원의 크기를 조정하고 싶을 수 있습니다. 이 때, R 의 VennDiagram 패키지를 이용할 수 있습니다.
코드는 아래와 같습니다. draw.pairwise.venn 함수에 area1, area2, cross.area 에 해당하는 값을 넘겨줍니다. 이 때 주의할 점은 area1, area2 에서는 교차되는 부분을 포함하는 값을 넣어주어야 합니다.
VennDiagram 패키지를 통한 벤다이어 그램 그리기
2개 집합 벤다이어그램
- area1 : A
- area2 : B
- cross.area : A∩B
library(VennDiagram)
A <- 1000
B <- 400
C <- 100
# 벤다이어그램 원 내부 수치 있도록 변경
# scaled = FALSE 로 지정하면, 실제 수치를 고려하지 않은 벤다이어그램을 그려줌
grid.newpage()
v <- draw.pairwise.venn(area1 = A, area2 = B, cross.area = C,
fill = c("light blue", "pink"),
alpha = rep(0.5, 2),
fontfamily='Kakao Regular', scaled=TRUE)
grid.draw(v)
# cex = 0 옵션을 통해 벤다이어그램 원 내부 수치 제거
grid.newpage()
v <- draw.pairwise.venn(area1 = A, area2 = B, cross.area = C,
fill = c("light blue", "pink"),
alpha = rep(0.5, 2),
fontfamily='Kakao Regular', cex=0, scaled=TRUE)
grid.draw(v)
3개 집합이 있는 벤다이어 그램
library(VennDiagram)
area1 <- 1080
area2 <- 607
area3 <- 367
n12 <- 308
n23 <- 190
n13 <- 175
n123 <- 21
grid.newpage()
overrideTriple = TRUE
v <- draw.triple.venn(
area1 = area1,
area2 = area2,
area3 = area3,
n12 = n12,
n23 = n23,
n13 = n13,
n123 = n123,
fill = c("light blue", "pink", 'light green'),
alpha = rep(0.5, 3),
cat.fontfamily='Kakao Regular',
fontfamily='Kakao Regular', scaled=TRUE
)
grid.draw(v)
참고) VennDiagram 패키지는 기본적으로 숫자에 thousand point 를 찍어주지 않는다. 패키지를 조작하여 venn diagram 내부 숫자에 thousand point 를 찍는 방법은 아래와 같다.
myvenn <- VennDiagram::draw.pairwise.venn
body(myvenn)[[46]][[3]] <- quote(function(x) {
prettyNum(x ,big.mark=",",scientific=FALSE)
})
draw.pairwise.venn 대신에 myvenn 을 사용하면 된다.
반응형
'Tools > R' 카테고리의 다른 글
R - ggplot 의 유용한 add-on 패키지 ggrepel (0) | 2024.08.22 |
---|---|
R - code snippet 특정 이름 패턴 파일들을 읽어 합치기 (0) | 2024.08.02 |
sparklyr - 변수 bucketing (기본 R과의 비교) (0) | 2024.06.14 |
R Standard evaluation 과 Tidy evaluation (0) | 2024.06.14 |
R - 롱테일 분포의 히스토그램 그리기 (0) | 2024.05.08 |