ggplot2绘图学习 箱图
R绘图往期回顾:
R绘图:patchwork 一页多图(2)通过数字,字母,#符号 控制布局
R绘图:ggeconodist,基于ggplot2的另类箱图
之前我们学习了ggplot绘制单变量,两个连续变量的图形,两个离散型变量。对于一个离散型变量,一个连续型变量,有很多作图方式,包括箱图,点图等等
· geom_boxplot() for box plot
· geom_violin() for violin plot
· geom_dotplot() for dot plot
· geom_jitter() for stripchart
· geom_line() for line plot
· geom_bar() for bar plot
今天我们介绍一下箱图
library(ggplot2)
data("ToothGrowth")
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
head(ToothGrowth)
我们先建立一个图层,以dose为X轴,len为Y轴
e <- ggplot(ToothGrowth, aes(x = dose, y = len))
箱图的主要函数及参数
· Key function: geom_boxplot()
· Alternative function: stat_boxplot()
· Key arguments to customize the plot: alpha, color, linetype, shape, size and fill
基本的箱图
e + geom_boxplot()
旋转的箱图
e + geom_boxplot() + coord_flip()
凹陷的箱图(缺口显示中位数以及置信区间)
e + geom_boxplot(notch = TRUE)
显示均线的箱图
e + geom_boxplot() +
stat_summary(fun = mean, geom = "point",
shape = 18, size = 4, color = "blue")
scale_x_discrete()可以
1 选择要展示的X轴
2 改变X轴顺序
选择要展示的X轴
e + geom_boxplot() +
scale_x_discrete(limits=c("0.5", "2"))
改变顺序
e + geom_boxplot() +
scale_x_discrete(limits=c("2", "0.5", "1"))
通过group改变颜色
边框和填充色都可以改变
单一颜色
e + geom_boxplot(color = "black", fill = "steelblue")
改变边框颜色
e + geom_boxplot(aes(color = dose))
改变填充色
e + geom_boxplot(aes(fill = dose))
手动改变边框/填充色
· scale_color_manual(), scale_fill_manual() : 用自定义颜色
· scale_color_brewer(), scale_fill_brewer() : 使用RColorBrewer包中的调色板
· scale_color_grey(), scale_fill_grey() :使用灰度
用自定义颜色
e2 <- e + geom_boxplot(aes(color = dose)) + theme_minimal()
e2 + scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))
调色板
e2 + scale_color_brewer(palette="Dark2")
e2 + scale_color_grey()
改变填充色
e3 <- e + geom_boxplot(aes(fill = dose)) + theme_minimal()
e3 + scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
e3 + scale_fill_brewer(palette="Dark2")
e3 + scale_fill_grey()
多组箱图
e + geom_boxplot(aes(fill = supp))
改变箱子的间距
e + geom_boxplot(aes(fill = supp), position = position_dodge(1))
自定义颜色
e + geom_boxplot(aes(fill = supp), position = position_dodge(1)) +
scale_fill_manual(values=c("#999999", "#E69F00"))
资源贴