美文网首页ggplotr
R语言与医学统计图形-【28】ggplot2扩展包ggrepel

R语言与医学统计图形-【28】ggplot2扩展包ggrepel

作者: 生物信息与育种 | 来源:发表于2020-02-11 15:20 被阅读0次

    ggplot2绘图系统——扩展包ggrepel、ggsci、gganimate、ggpubr等

    部分扩展包可在CRAN直接下载,有些需借助devtools包从Github下载。

    1. ggrepel包

    用来在图上添加文字和标签,相比geom_text和geom_label函数,能将重叠的标签分开,并添加指示短横线。

    library(ggrepel)
    ggplot(mtcars,aes(wt,mpg))+geom_point(color='red')+
      geom_text_repel(aes(label=rownames(mtcars)),
                      segment.color = 'blue')+
      theme_classic(base_size = 16)
    
    image.png

    2. ggsci包

    肖楠作品,针对科研人员的包,满足不同杂志风格的配色,包括十几种配色方案。

    基本配色函数:


    image.png

    Lancet配色示例。

    library(ggsci)
    p1 <- ggplot(subset(diamonds,carat>=2.2),aes(x=table,y=price,color=cut))+
      geom_point(alpha=0.7)+
      geom_smooth(method = 'loess',alpha=0.05,size=1,span=1)+
      theme_bw()
    a <- p1+scale_color_lancet()
    
    p2 <- ggplot(subset(diamonds,carat>2.2&depth>55&depth<70),
                 aes(x=depth,fill=cut))+
      geom_histogram(color='black',binwidth = 1,position = 'dodge')+
      theme_bw()
    b <- p2+scale_fill_lancet()
    
    grid.arrange(a,b,ncol=2)
    
    image.png

    JCO配色风格示例。

    c <- p1+scale_color_jco()
    d <- p2+scale_fill_jco()
    grid.arrange(c,d,ncol=2)
    
    image.png

    3. gganimate包

    绘制动态图(将静态的png、jpeg图片转化成动态的gif文件)。

    使用gganimate前,需在本机上先安装ImageMagick软件(专用于图片编辑、合成、转换及其他处理的软件)。

    library(gganimate)
    date <- as.character(economics$date)
    economics$year <- substr(date,1,4) #提取年份
    p <- ggplot(economics,aes(date,uempmed,size=unempoly,
                              frame=year))+#必须参数,展示每一帧名称
      geom_point()
    gganimate(p)
    
    aq <- airquality
    aq$date <- as.Date(paste(1973,aq$Month,aq$Day,sep = '-'))
    p2 <- ggplot(aq,aes(date,Temp,frame=Month,
                        cumulative=TRUE))+ #叠加显示,而非单独显示每一帧
      geom_line()
    gganimate(p2,title_frame=FALSE)
    

    4. ggpubr包

    快速生成论文发表级的统计图形。

    两两比较盒形图

    library(ggpubr)
    data('ToothGrowth')
    df <- ToothGrowth
    p <- ggboxplot(df,
                   x='dose',
                   y='len',
                   color = 'dose',#颜色映射变量
                   palette = c('#00AFBB','#E7B800','#FC4E07'), #盒形颜色取值
                   add = 'jitter', #点扰动
                   shape='dose' #扰动点形状
                   )
    p
    #代码风格更偏向于基础包,注意传入的变量都是字符串形式
    
    
    #######统计学差异绘图
    
    #定义哪些组两两比较
    my_comparisons <- list(c('0.5','1'),c('1','2'),c('0.5','2'))
    #添加组间比较p值
    b <- p+stat_compare_means(comparisons = my_comparisons)+
      stat_compare_means(label.y = 50) #p值位置
    
    grid.arrange(p,b,ncol=2)
    
    image.png
    小提琴图
    ggviolin(df,
             x='dose',
             y='len',
             fill = 'dose',
             palette = c('#00AFBB','#E7B800','#FC4E07'), 
             add = 'boxplot', #添加盒形图
             add.params = list(fill='white'))+
             #定义后添加图形的属性,这里定义盒形图填充色
      stat_compare_means(comparisons = my_comparisons,
                         label = 'p.signif') +#以显著程度展示,而非p
      stat_compare_means(label.y=50) #总体比较p值位置
    
    image.png

    条形图和滑珠图
    滑珠图是条形图一种变形。
    示例比较。

    mtcars$name <- rownames(mtcars)
    mtcars$cyl <- as.factor(mtcars$cyl)
    
    #条形图
    a <- ggbarplot(mtcars,x='name',y='mpg',
              fill = 'cyl',
              color='white',
              palette = 'lancet', #配色风格,JCO
              sort.val = 'desc', #对y变量降序
              sort.by.groups = FALSE, #各组不分开排列
              x.text.angle=90
              )
    
    #滑珠图
    b <- ggdotchart(mtcars,x='name',y='mpg',
                    color = 'cyl',
                    palette = 'jco',
                    sorting = 'ascending', #升序排列
                    add = 'segments', #添加线段,使之成为滑珠图
                    ggtheme = theme_pubr() #图形整体风格
                    )
    grid.arrange(a,b,ncol=2)
    
    image.png

    改善后的滑珠图。

    ggdotchart(mtcars,x='name',y='mpg',
               color = 'cyl',
               palette = c('#00AFBB','#E7B800','#FC4E07'),
               sorting = 'descending', 
               add = 'segments', 
               rotate = TRUE,
               group = 'cyl', #各亚组分开
               dot.size = 6, #散点大小
               label = round(mtcars$mpg),#mpg值作为散点标签
               font.label = list(color='white',size=9,vjust=0.5),
               #定义散点其他属性
               ggtheme = theme_pubr() 
    )
    
    image.png

    5. 其他扩展包

    • ggfortify包
    • ggforce包
      对ggplot2几何对象进行了扩展,加入arcs、curves等几何对象,更方便绘制饼图、弧形等。
    • ggradar包
      雷达图/蜘蛛图。
    • ggnetwork包
      社交网络数据可视化。

    相关文章

      网友评论

        本文标题:R语言与医学统计图形-【28】ggplot2扩展包ggrepel

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