출판 준비 플롯 ggpubr
ggpubr R 패키지는 고급 프로그래밍 지식이없는 연구자를 위해 ggplot2 기반의 아름다운 그래프를 쉽게 만들 수 있습니다. 현재 자료는 ggpubr을 사용하여 발행 준비 플롯을 간단하게 작성하고 사용자 정의하기위한 기사 모음을 제시함으로써 시작됩니다. 다음으로 ggpubr을 사용하여 만든 플롯의 몇 가지 예가 표시됩니다.
ggpubr 패키지의 주요 기능은 다음과 같습니다.
- R 프로그래밍의 초보자를위한 덜 불투명 한 구문을 사용하여 ggplot2 패키지를 래핑합니다.
- 고급 R 프로그래밍 기술을 갖춘 연구원이 쉽게 게시 할 수있는 플롯을 만들 수 있도록 지원합니다.
- 상자 플롯, 막대 플롯, 라인 플롯 등에 p 값과 유의 수준을 자동으로 추가 할 수 있습니다.
- 동일한 페이지에서 여러 개의 플롯을 쉽게 정렬하고 주석을 달 수 있습니다.
- 색상 및 레이블과 같은 그라디언트 매개 변수를 쉽게 변경할 수 있습니다.
공식 온라인 문서 : http://www.sthda.com/english/rpkgs/ggpubr.
ggpubr 설치 및로드
- 다음과 같이 CRAN에서 설치하십시오.
1 2 3 |
#install.packages("ggpubr") |
- 또는 다음과 같이 GitHub에서 최신 버전을 설치하십시오.
1 2 3 4 |
#if(!require(devtools)) install.packages("devtools") devtools::install_github("kassambara/ggpubr") |
- ggpubr 패키지 적재
1 2 3 |
library(ggpubr) |
ggpubr로 만든 플롯의 예
분포
1 2 3 4 5 6 7 8 9 10 |
library(ggpubr) # 일부 데이터 형식 만들기 # ::::::::::::::::::::::::::::::::::::::::::::::::::: set.seed(1234) wdata = data.frame( sex = factor(rep(c("F", "M"), each=200)), weight = c(rnorm(200, 55), rnorm(200, 58))) head(wdata, 4) |
1 2 3 4 5 6 7 |
## sex weight ## 1 F 53.79293 ## 2 F 55.27743 ## 3 F 56.08444 ## 4 F 52.65430 |
1 2 3 4 5 6 7 8 9 10 |
# 평균 선과 가장자리 러그가있는 밀도 도표 # ::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: # 개요 변경 및 성별 그룹별 색 채우기 # 사용자 정의 팔레트 사용 ggdensity(wdata, x = "weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = c("#00AFBB", "#E7B800")) |
1 2 3 4 5 6 7 8 9 10 |
# 평균선과 가장자리 깔개가있는 막대 그래프 도표 # ::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: # 개요 변경 및 성별 그룹별 색 채우기 # 사용자 정의 색상 표 사용 gghistogram(wdata, x = "weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = c("#00AFBB", "#E7B800")) |
1 2 3 4 |
## Warning: Using `bins = 30` by default. Pick better value with the argument ## `bins`. |
박스 플롯 및 바이올린 플롯
1 2 3 4 5 6 |
# Load data data("ToothGrowth") df <- ToothGrowth head(df, 4) |
1 2 3 4 5 6 7 |
## len supp dose ## 1 4.2 VC 0.5 ## 2 11.5 VC 0.5 ## 3 7.3 VC 0.5 ## 4 5.8 VC 0.5 |
1 2 3 4 5 6 7 8 9 10 11 |
# 지터 점이있는 상자 그림 # ::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: # 그룹별로 윤곽선 색 변경 : 복용량 # 사용자 정의 색상 표 사용 # 지터 포인트 추가 및 그룹별로 모양 변경 p <- ggboxplot(df, x = "dose", y = "len", color = "dose", palette =c("#00AFBB", "#E7B800", "#FC4E07"), add = "jitter", shape = "dose") p |
1 2 3 4 5 6 7 |
# 그룹을 비교하는 p-value 추가 # 원하는 비교를 지정하십시오 my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") ) p + stat_compare_means(comparisons = my_comparisons)+ # 쌍 방향 비교 p-value 추가 stat_compare_means(label.y = 50) # 글로벌 p-value 추가 |
1 2 3 4 5 6 7 |
ggviolin(df, x = "dose", y = "len", fill = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07"), add = "boxplot", add.params = list(fill = "white"))+ stat_compare_means(comparisons = my_comparisons, label = "p.signif")+ # 유의 수준 추가 stat_compare_means(label.y = 50) # p-value 값을 전역으로 추가하십시오. |
막대 플롯 (Bar Plots)
데모 데이터 세트
데이터 로드 및 준비
1 2 3 4 5 6 7 8 9 10 11 |
# 데이터 로드 data("mtcars") dfm <- mtcars # cyl 변수를 factor로 변환. dfm$cyl <- as.factor(dfm$cyl) # 이름 열 추가 dfm$name <- rownames(dfm) # 데이터 검사 head(dfm[, c("name", "wt", "mpg", "cyl")]) |
1 2 3 4 5 6 7 8 9 |
## name wt mpg cyl ## Mazda RX4 Mazda RX4 2.620 21.0 6 ## Mazda RX4 Wag Mazda RX4 Wag 2.875 21.0 6 ## Datsun 710 Datsun 710 2.320 22.8 4 ## Hornet 4 Drive Hornet 4 Drive 3.215 21.4 6 ## Hornet Sportabout Hornet Sportabout 3.440 18.7 8 ## Valiant Valiant 3.460 18.1 6 |
정렬 된 막대 그래프
그룹 변수 “cyl”로 채우기 색상을 변경하십시오. 정렬은 전역으로 수행되지만 그룹으로 수행되지는 않습니다.
1 2 3 4 5 6 7 8 9 10 |
ggbarplot(dfm, x = "name", y = "mpg", fill = "cyl", # cyl에 의한 채우기 색 변경 color = "white", # 막대 테두리 색상을 흰색으로 설정 palette = "jco", # jco 저널 컬러 팔레트. ?ggpubr 참조 sort.val = "desc", # 값을 내림차순으로 정렬 sort.by.groups = FALSE, # 각 그룹 내에서 정렬하지 않음 x.text.angle = 90 # 수직으로 x 축 텍스트 회전 ) |
각 그룹 내의 바를 정렬하십시오. sort.by.groups = TRUE 인수를 사용하십시오.
1 2 3 4 5 6 7 8 9 10 |
ggbarplot(dfm, x = "name", y = "mpg", fill = "cyl", # cyl에 의한 채우기 색 변경 color = "white", # 막대 테두리 색상을 흰색으로 설정 palette = "jco", # jco 저널 컬러 팔레트. ?ggpubr 참조 sort.val = "asc", # 값을 오름차순으로 정렬 sort.by.groups = TRUE, # 각 그룹 내부 정렬 x.text.angle = 90 # 수직으로 x 축 텍스트 회전 ) |
편차 그래프 (Deviation Graph)
편차 그래프는 정량적값과 기준값의 편차를 보여줍니다. 아래의 R 코드에서 mtcars 데이터 세트의 mpg z-점수를 표시합니다.
mpg 데이터의 z-점수 계산
1 2 3 4 5 6 7 8 |
# mpg 데이터의 z-점수 계산 dfm$mpg_z <- (dfm$mpg -mean(dfm$mpg))/sd(dfm$mpg) dfm$mpg_grp <- factor(ifelse(dfm$mpg_z < 0, "low", "high"), levels = c("low", "high")) # 데이터 검사 head(dfm[, c("name", "wt", "mpg", "mpg_z", "mpg_grp", "cyl")]) |
1 2 3 4 5 6 7 8 9 |
## name wt mpg mpg_z mpg_grp cyl ## Mazda RX4 Mazda RX4 2.620 21.0 0.1508848 high 6 ## Mazda RX4 Wag Mazda RX4 Wag 2.875 21.0 0.1508848 high 6 ## Datsun 710 Datsun 710 2.320 22.8 0.4495434 high 4 ## Hornet 4 Drive Hornet 4 Drive 3.215 21.4 0.2172534 high 6 ## Hornet Sportabout Hornet Sportabout 3.440 18.7 -0.2307345 low 8 ## Valiant Valiant 3.460 18.1 -0.3302874 low 6 |
mpg 수준에 따라 색상이 지정된 정렬된 막대 그림을 만듭니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
ggbarplot(dfm, x = "name", y = "mpg_z", fill = "mpg_grp", # mpg_level로 채우기 색상 변경 color = "white", # 막대 테두리 색상을 흰색으로 설정 palette = "jco", # jco 저널 컬러 팔레트. ?ggpubr 참조 sort.val = "asc", # 값을 오름차순으로 정렬 sort.by.groups = FALSE, # 각 그룹 내에서 정렬하지 않음 x.text.angle = 90, # 수직으로 x 축 텍스트 회전 ylab = "MPG z-score", xlab = FALSE, legend.title = "MPG Group" ) |
rotate = TRUE 및 sort.val = “desc” 을 사용하여 플롯 회전
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
ggbarplot(dfm, x = "name", y = "mpg_z", fill = "mpg_grp", # mpg_level로 채우기 색상 변경 color = "white", # 막대 테두리 색상을 흰색으로 설정 palette = "jco", # jco 저널 컬러 팔레트. ?ggpubr 참조 sort.val = "desc", # 값을 내림차순으로 정렬 sort.by.groups = FALSE, # 각 그룹 내에서 정렬하지 않음 x.text.angle = 90, # 수직으로 x 축 텍스트 회전 ylab = "MPG z-score", legend.title = "MPG Group", rotate = TRUE, ggtheme = theme_minimal() ) |
도트 차트 (Dot charts)
롤리팝 차트 (Lollipop chart)
롤리팝 차트는 시각화 할 값이 많을 때 막대 그래프의 대안입니다. 그룹 변수 “cyl”로 표시된 롤리팝 차트는 아래와 같습니다.
1 2 3 4 5 6 7 8 9 |
ggdotchart(dfm, x = "name", y = "mpg", color = "cyl", # 그룹별 색상 palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 사용자 정의 색상표 sorting = "ascending", # 값을 내림차순으로 정렬 add = "segments", # y = 0 부터 도트까지 세그먼트를 추가 ggtheme = theme_pubr() # ggplot2 테마 ) |
- sorting = “descending” 를 사용하여 내림차순으로 정렬합니다.
- rotate = TRUE를 사용하여 플롯을 수직으로 회전합니다.
- group = “cyl”를 사용하여 각 그룹 내의 mpg 값을 정렬합니다.
- dot.size를 6으로 설정합니다.
- mpg 값을 레이블로 추가합니다. label = “mpg”또는 label = round (dfm $ mpg)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
ggdotchart(dfm, x = "name", y = "mpg", color = "cyl", # 그룹별 색상 palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 사용자 정의 색상 표 sorting = "descending", # 값을 내림차순으로 정렬 add = "segments", # y = 0 부터 도트까지 세그먼트를 추가 rotate = TRUE, # 수직으로 회전 group = "cyl", # "cyl" 그룹으로 정렬 dot.size = 6, # 큰 도트 크기 label = round(dfm$mpg), # 점 레이블로 mpg 값 추가 font.label = list(color = "white", size = 9, vjust = 0.5), # 라벨 매개 변수 조정 ggtheme = theme_pubr() # ggplot2 테마 ) |
편차 그래프 – y = “mpg_z”사용 – 세그먼트 색상 및 크기 변경 : add.params = list (color = “lightgray”, size = 2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
ggdotchart(dfm, x = "name", y = "mpg_z", color = "cyl", # 그룹별 색상 palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 사용자 정의 색상표 sorting = "descending", # 값을 내림차순으로 정렬 add = "segments", # y = 0 부터 도트까지 세그먼트를 추가 add.params = list(color = "lightgray", size = 2), # 세그먼트 색상 및 크기 변경 group = "cyl", # "cyl" 그룹으로 정렬 dot.size = 6, # 큰 도트 크기 label = round(dfm$mpg_z,1), # 점 레이블로 mpg 값 추가 font.label = list(color = "white", size = 9, vjust = 0.5), # 라벨 매개 변수 조정 ggtheme = theme_pubr() # ggplot2 테마 )+ geom_hline(yintercept = 0, linetype = 2, color = "lightgray") |
클리블랜드의 도트 플롯 (Cleveland’s dot plot)
그룹별로 텍스트를 색칠합니다. y.text.col = TRUE를 사용하십시오.
1 2 3 4 5 6 7 8 9 10 11 12 |
ggdotchart(dfm, x = "name", y = "mpg", color = "cyl", # 그룹별 색상 palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 사용자 정의 색상표 sorting = "descending", # 값을 내림차순으로 정렬 rotate = TRUE, # 수직으로 회전 dot.size = 2, # 큰 도트 크기 y.text.col = TRUE, # 그룹별 컬러 y 텍스트 ggtheme = theme_pubr() # ggplot2 테마 )+ theme_cleveland() # 파선 그<img class="aligncenter size-full wp-image-6946" src="http://the-r.kr/wp-content/uploads/2019/08/unnamed-chunk-20-1.png" alt="" width="960" height="768" /> |