ggplot2修饰图例的那些事
2021-08-26 本文已影响0人
R语言数据分析指南
绘图中经常需要对图片进行精细调整,图例的调整尤其重要;本节来详细介绍调整图例的细节
安装R包
安装{tidyverse},如果对tidyverse不了解请查看 往期 tidyverse合集
package.list=c("tidyverse")
for (package in package.list) {
if (!require(package,character.only=T, quietly=T)) {
install.packages(package)
library(package, character.only=T)
}
}
注:上面这段代码会同时下载并加载R包
依然还是使用我们熟悉的iris数据集合
iris %>% as_tibble()
# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
根据iris数据集绘制boxplot
p <- iris %>% pivot_longer(-Species) %>%
mutate(name=as.factor(name)) %>%
ggplot(aes(name,value,fill=Species))+
stat_boxplot(geom="errorbar",
position=position_dodge(width=0.8),width=0.2)+
geom_boxplot(position=position_dodge(width =0.8))+
labs(caption = "2021-8-26")+
theme(panel.grid.major=element_blank(), # 移除主网格线
panel.grid.minor=element_blank(), # 移除次网格线
panel.background = element_blank(), # 设置背景为空
axis.title.x=element_blank(), # 设置X标题为空
axis.title.y=element_blank(), # 设置Y标题为空
axis.text.x=element_text(color="blue",margin = margin(t = 5)), # 设置X轴文本颜色
axis.text.y=element_text(color="black",margin = margin(r = 5)), # 设置y轴文本颜色
axis.ticks.x=element_line(color="red",size=2), # 设置X轴刻度条颜色
axis.ticks.length.x = unit(-.2, "cm"), # 设置X轴刻度长度及方向
panel.border = element_rect(linetype = "dashed",fill = NA), # 定义边框线条类型
axis.line.x.bottom = element_line(linetype="solid"), # 定义x轴线条类型
plot.margin=unit(c(0.5,0.5,0.5,0.5),units=,"cm"), # 定义图边距离
plot.caption = element_text(size = 12, face = "italic", # 设置脚注
color = "#606F7B", margin = margin(t = 12)))
上面的代码我们对图例以外的theme进行了全面的调整,下面我们主要来对图例进行调整
定义图例位置
p1 <- p + theme(legend.position = "top")+ # 设置图例顶部
guides(fill = guide_legend(direction = "horizontal"))+ # 图例水平放置
guides(fill=guide_legend(nrow=3, byrow=TRUE)) # 图例拆分3行
p1
p2 <- p + theme(legend.title = element_blank(), # 图例标题为空
legend.key=element_blank(), # 图例键为空
legend.text = element_text(color="black",size=10), # 定义图例文本
legend.spacing.x=unit(0.1,'cm'), # 定义文本书平距离
legend.key.width=unit(0.5,'cm'), # 定义图例水平大小
legend.key.height=unit(0.5,'cm'), # 定义图例垂直大小
legend.background=element_blank(), # 设置背景为空
legend.box.background=element_rect(colour = "black"), # 图例绘制边框
legend.box.margin = margin(1,1,1,1)) # 设置图例边距
p2 + theme(legend.justification = c("right","bottom"))
放置图例到图内
p2 + theme(legend.position = c(1, 1), legend.justification = c(1, 1))
喜欢的小伙伴欢迎关注我的公众号
R语言数据分析指南,持续分享数据可视化的经典案例及一些生信知识,希望对大家有所帮助