美文网首页R甲基化
为什么我不建议初学者使用ggpubr绘图

为什么我不建议初学者使用ggpubr绘图

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

    今天来谈一下我对ggpubr包的看法,记得刚开始学习数据可视化分析时,某一天突然看到ggpubr包感觉如获至宝;被其文案所打动,制作美观可用于发表的图表。Alboukadel Kassambara无疑是一个出色的数据分析专家,ggpubrrstatix等软件包在统计分析上也有其可取之处。但是ggpubr在数据可视化上不兼容ggplot2语法自成一套,除非能去看源代码,不然会禁锢在作者展示的示例之中,从而完全体会不到ggplot2的强大之处。建议想学习好数据可视化的小伙伴还是尽量不使用ggpubr不然你会走不少弯路下面通过几个案例来展示ggpubrggplot2之间的区别

    后台回复关键词ggpubr获取交互式文档

    密度图(ggpubr)版

    pacman::p_load(tidyverse,aplot,reshape,ggpubr)
    
    wdata = data.frame(
      sex = factor(rep(c("F", "M"), each=200)),
      weight = c(rnorm(200, 55), rnorm(200, 58)))
    
    ggdensity(wdata, x = "weight",
              add = "mean", rug = TRUE,
              color = "sex", fill = "sex",
              palette = c("#00AFBB", "#E7B800"))
    

    可以看到ggpubr的代码是相当的简洁,难怪这么多的人对他趋之若鹜,但是为什么不建议初学者使用它进行数据可视化那,请继续往下看,下面通过ggplot2来绘制一张同样的图,请观众老爷们细细品味

    密度图(ggplot2)版

    mu <- wdata %>% group_by(sex) %>%
      summarize(mean= mean(weight))
    
    wdata %>% ggplot(aes(weight,fill=sex,color=sex))+
      geom_density(alpha=0.6)+
      scale_color_manual(values=c("#00AFBB", "#E7B800"))+
      scale_fill_manual(values=c("#00AFBB", "#E7B800"))+
      geom_rug(aes(color=sex))+
      geom_vline(data=mu,aes(xintercept=mean,color=sex),
                 linetype="dashed")+
      labs(x=NULL,y=NULL)+
      theme_classic()+
      theme(legend.position = "top",
            plot.margin = unit(c(0.5, 0.5,0.5,0.5),"cm"),
            axis.text.x = element_text(size=13,color="black"),
            axis.text.y = element_text(size=13,color="black"),
            panel.background = element_rect(fill = "white"))
    

    2张图唯一的区别应该就是在颜色透明度上的了,但是细看ggplot2的绘图代码会发现我们调用了很多的函数,代码远不如ggpubr简洁,但是通过这么一整段的代码我们运用了几乎一整套ggplot2的语法,下面来详细进行解释

    mu <- wdata %>% group_by(sex) %>%
      summarize(mean= mean(weight))
    

    首先我们使用了第一个参数 %>%(管道) 它的作用是将左边的参数传递到右边从而减少中间变量的使用

    接着我们使用了 dplyr包,它是tidyverse的组成部分在加载tidyverse是会自动加载它;dplyr中有一系列强大的数据处理函数,认真掌握可以让你的数据分析过程异常轻松,详细内容参考官方教程:https://dplyr.tidyverse.org/;在此段代码中我们使用 group_by( )按sex对数据进行分组,再紧接summarize( )函数进行统计,此处我们只统计了平均值,有了均值数据才可绘制图中的线条,我们将结果赋值给变量mu.

    > mu
    # A tibble: 2 x 2
      sex    mean
      <fct> <dbl>
    1 F      54.9
    2 M      58.1
    
    wdata %>% ggplot(aes(weight,fill=sex,color=sex))+
      geom_density(alpha=0.6)+
      scale_color_manual(values=c("#00AFBB", "#E7B800"))+
      scale_fill_manual(values=c("#00AFBB", "#E7B800"))+
      geom_rug(aes(color=sex,alpha=0.6),show.legend = F)+
      geom_vline(data=mu,aes(xintercept=mean,color=sex),
                 linetype="dashed")+
      labs(x=NULL,y=NULL)+
      theme_classic()+
      theme(legend.position = "top",
            plot.margin = unit(c(0.5, 0.5,0.5,0.5), "cm"),
            axis.text.x = element_text(size=13,color="black"),
            axis.text.y = element_text(size=13,color="black"),
            panel.background = element_rect(fill = "white"))
    

    上面这段代码我们自定义了2类颜色,3种几何对象,最终通过theme函数对图像文本进行了全面设置。为了更直观的查看每一行代码的含义,我制作了一个交互式文档,后台回复关键词ggpubr获取交互式文档

    相关文章

      网友评论

        本文标题:为什么我不建议初学者使用ggpubr绘图

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