ggplot2修饰图例的那些事

作者: R语言数据分析指南 | 来源:发表于2021-08-26 21:22 被阅读0次

    绘图中经常需要对图片进行精细调整,图例的调整尤其重要;本节来详细介绍调整图例的细节

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

    相关文章

      网友评论

        本文标题:ggplot2修饰图例的那些事

        本文链接:https://www.haomeiwen.com/subject/kfbuiltx.html