R语言可视化(七):箱线图绘制
07.箱线图绘制
清除当前环境中的变量
rm(list=ls())
设置工作目录
setwd("C:/Users/Dell/Desktop/R_Plots/07boxplot/")
基础boxplot函数绘制箱线图
## boxplot on a formula:
# 查看内置数据集
head(InsectSprays)
## count spray
## 1 10 A
## 2 7 A
## 3 20 A
## 4 14 A
## 5 14 A
## 6 12 A
boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
boxplot(count ~ spray, data = InsectSprays,
notch = TRUE, col = "blue")
## Warning in bxp(list(stats = structure(c(7, 11, 14, 18.5, 23, 7, 12, 16.5, :
## some notches went outside hinges ('box'): maybe set notch=FALSE
## boxplot on a matrix:
mat <- cbind(Uni05 = (1:100)/21, Norm = rnorm(100),
`5T` = rt(100, df = 5), Gam2 = rgamma(100, shape = 2))
head(mat)
## Uni05 Norm 5T Gam2
## [1,] 0.04761905 0.7106628 1.36924396 5.6044293
## [2,] 0.09523810 1.0806786 0.55538157 0.9160426
## [3,] 0.14285714 0.8803233 -1.14302098 3.7818738
## [4,] 0.19047619 -0.3892679 0.96060571 1.8471195
## [5,] 0.23809524 0.6940575 -0.03855087 1.2075029
## [6,] 0.28571429 -1.1620767 4.36417197 3.5148279
boxplot(mat) # directly, calling boxplot.matrix()
## boxplot on a data frame:
df <- as.data.frame(mat)
par(las = 1) # all axis labels horizontal
boxplot(df, main = "boxplot(*, horizontal = TRUE)",
col = "red", notch = T, horizontal = TRUE)
## Using 'at = ' and adding boxplots -- example idea by Roger Bivand :
head(ToothGrowth)
## 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
## 5 6.4 VC 0.5
## 6 10.0 VC 0.5
boxplot(len ~ dose, data = ToothGrowth,
subset = supp == "VC",
at = 1:3 - 0.2,
boxwex = 0.25,
col = "yellow",
main = "Guinea Pigs' Tooth Growth",
xlab = "Vitamin C dose mg",
ylab = "tooth length",
xlim = c(0.5, 3.5), ylim = c(0, 35), yaxs = "i")
boxplot(len ~ dose, data = ToothGrowth,
add = TRUE,
subset = supp == "OJ",
at = 1:3 + 0.2,
boxwex = 0.25,
col = "orange")
legend("topleft", c("Ascorbic acid", "Orange juice"),
fill = c("yellow", "orange"))
## With less effort (slightly different) using factor *interaction*:
boxplot(len ~ dose:supp, data = ToothGrowth,
boxwex = 0.5, col = c("orange", "yellow"),
main = "Guinea Pigs' Tooth Growth",
xlab = "Vitamin C dose mg", ylab = "tooth length",
sep = ":", lex.order = TRUE, ylim = c(0, 35), yaxs = "i")
ggplot2包绘制箱线图
library(ggplot2)
data <- read.table("demo1_boxplot.txt",header = T)
head(data)
## BRCA1 sample_type
## 1 4.53 Tumor
## 2 6.28 Tumor
## 3 6.38 Tumor
## 4 6.45 Tumor
## 5 6.67 Tumor
## 6 6.84 Tumor
ggplot(data,aes(sample_type,BRCA1,fill=sample_type)) +
geom_boxplot()
# 添加扰动点,更改离群点的颜色,形状和大小
ggplot(data,aes(sample_type,BRCA1,fill=sample_type)) +
geom_boxplot(width=0.5,outlier.color = "red",outlier.shape = 2,outlier.size = 3) +
geom_jitter(shape=16, position=position_jitter(0.2))
# 添加notch,更改颜色
ggplot(data,aes(sample_type,BRCA1,fill=sample_type)) +
geom_boxplot(notch = T,width=0.5,alpha=0.8) +
scale_fill_brewer(palette="Set1")
# 添加均值点
ggplot(data,aes(sample_type,BRCA1,fill=sample_type)) +
geom_boxplot(notch = T,width=0.5,alpha=0.8) +
scale_fill_brewer(palette="Set1") +
stat_summary(fun.y="mean",geom="point",shape=23,
size=4,fill="white")
# 添加误差棒
ggplot(data,aes(sample_type,BRCA1,fill=sample_type)) +
geom_boxplot(notch = T,width=0.5,alpha=0.8) +
stat_boxplot(geom = "errorbar",width=0.1) +
scale_fill_brewer(palette="Set1") +
stat_summary(fun.y="mean",geom="point",shape=23,
size=4,fill="white")
# 更换主题背景,旋转坐标轴
ggplot(data,aes(sample_type,BRCA1,fill=sample_type)) +
stat_boxplot(geom = "errorbar",width=0.1) +
geom_boxplot(notch = T,width=0.5,alpha=0.8) +
scale_fill_brewer(palette="Set1") +
stat_summary(fun.y="mean",geom="point",
shape=23,size=4,fill="white") +
theme_bw() + coord_flip()
ggpubr包绘制箱线图
library(ggpubr)
data <- read.table("demo1_boxplot.txt",header = T)
head(data)
## BRCA1 sample_type
## 1 4.53 Tumor
## 2 6.28 Tumor
## 3 6.38 Tumor
## 4 6.45 Tumor
## 5 6.67 Tumor
## 6 6.84 Tumor
ggboxplot(data,x="sample_type",y="BRCA1",
width = 0.6,fill="sample_type")
# 添加notch,扰动点,更改颜色
ggboxplot(data,x="sample_type",y="BRCA1",
width = 0.6,fill="sample_type",
notch = T,palette = c("#00AFBB", "#E7B800"),
add = "jitter",shape="sample_type")
# 添加误差棒和均值
ggboxplot(data,x="sample_type",y="BRCA1",
width = 0.6,fill="sample_type",
bxp.errorbar = T, bxp.errorbar.width = 0.2,
add = "mean",add.params = list(size=1,color="white"))
# 旋转坐标轴
ggboxplot(data,x="sample_type",y="BRCA1",
width = 0.6,fill="sample_type",
add = "mean",add.params = list(size=1,color="white"),
notch = T,orientation = "horizontal")
sessionInfo()
## R version 3.6.0 (2019-04-26)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 18363)
##
## Matrix products: default
##
## locale:
## [1] LC_COLLATE=Chinese (Simplified)_China.936
## [2] LC_CTYPE=Chinese (Simplified)_China.936
## [3] LC_MONETARY=Chinese (Simplified)_China.936
## [4] LC_NUMERIC=C
## [5] LC_TIME=Chinese (Simplified)_China.936
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] ggpubr_0.2.1 magrittr_1.5 ggplot2_3.2.0
##
## loaded via a namespace (and not attached):
## [1] Rcpp_1.0.1 knitr_1.23 tidyselect_0.2.5
## [4] munsell_0.5.0 colorspace_1.4-1 R6_2.4.0
## [7] rlang_0.4.0 stringr_1.4.0 dplyr_0.8.3
## [10] tools_3.6.0 grid_3.6.0 gtable_0.3.0
## [13] xfun_0.8 withr_2.1.2 htmltools_0.3.6
## [16] yaml_2.2.0 lazyeval_0.2.2 digest_0.6.20
## [19] assertthat_0.2.1 tibble_2.1.3 ggsignif_0.5.0
## [22] crayon_1.3.4 RColorBrewer_1.1-2 purrr_0.3.2
## [25] glue_1.3.1 evaluate_0.14 rmarkdown_1.13
## [28] labeling_0.3 stringi_1.4.3 compiler_3.6.0
## [31] pillar_1.4.2 scales_1.0.0 pkgconfig_2.0.2
END