相关性R语言做图生信绘图

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语言数据分析指南,持续分享数据可视化的经典案例及一些生信知识,希望对大家有所帮助

上一篇下一篇

猜你喜欢

热点阅读