ggplot画分页图

作者: 尧小飞 | 来源:发表于2019-05-06 13:45 被阅读93次

    使用ggplot画分页图

    • 需求
    • 数据
    • facet_wrap
    • facet_wrap参数说明

    需求

    由于有较多组的样品需要比较,图片皆为小提琴图,因此需要将多个样品的小提琴图放在一张图上面比较,比如下图:

    分页图示范图
    备注:部分参考R语言绘制箱线图和小提琴图作图示例的内容。

    数据

    这里用于画图的数据皆来自科学网lyao222lll的个人博客,这里画分页图主要用的数据为alpha1,数据结构如下:

    > head(alpha1)
      samples group1 group2         variable value
    1    c1.1      c      1 observed_species  2323
    2    c1.2      c      1 observed_species  2203
    3    c1.3      c      1 observed_species  2156
    4    c1.4      c      1 observed_species  2324
    5    c1.5      c      1 observed_species  2203
    6    c1.6      c      1 observed_species  2207
    

    facet_wrap分页画图

    #首先对x轴、y轴等相关ggplot画图的参加进行设置
    p0<-theme(axis.text.x = element_text(color="black",size=15),
            axis.text.y = element_text(color="black",size=15),
            axis.title.x = element_text(face="plain", color="black",size=20),
            axis.title.y = element_text(face="plain", color="black",size=20),
            title=element_text(size=20))
    #ggplot画图
    ggplot(alpha1, aes(x = group2, y = value, fill = group1)) + 
    geom_violin(scale = "width",adjust =1) + 
    facet_wrap(~variable, nrow =2,ncol =4,scales = 'free_x') +
    labs(x = '', y = '') +
    theme(panel.grid = element_blank(), panel.background = element_rect(fill = 'transparent', color = 'black'), legend.title = element_blank(), legend.key = element_blank(),strip.text = element_text(size = 20),strip.background = element_rect(fill = NA, colour = NA),strip.text.y = element_blank())+p0
    

    facet_wrap参数说明

    参数说明:

    facet_wrap(facets, nrow = NULL, ncol = NULL, scales = "fixed",
    shrink = TRUE, labeller = "label_value", as.table = TRUE,
    switch = NULL, drop = TRUE, dir = "h", strip.position = "top")



    这里使用数据框“alpha1”作为作图数据,该数据框中包含了所有样本(分组)的所有类型的alpha多样性指数信息。以其中的group2列中的因子为横坐标,value列中的数值为纵坐标,使用geom_boxplot()绘制箱线图,并按两大分组(示例数据中的c组和t组)着色。使用facet_wrap()在ggplot2中添加分面,依据alpha多样性指数类型种类数(本示例为4种)分别作图展示各alpha多样性指数在各分组中的分布情况。theme()简要设置主题,包括去除默认的背景框、图例标题和背景色等。其它更多细节参数未加以设置,大家若有需要可自行调整(参考R语言绘制箱线图和小提琴图作图示例的内容)。

    这里主要介绍一下对每一副图中标题、坐标的调整,x和y轴坐标调整与其他ggplot画图一样,可以通过theme()函数调整,比如这里的p0:

    p0<-theme(panel.grid=element_blank(), legend.background = element_rect(colour = NA),
            legend.title = element_blank(),legend.text = element_text(face="plain", color="black",size = 20),
            legend.position = 'none',
            axis.text.x = element_text(color="black",size=15),
            axis.text.y = element_text(color="black",size=15),
            axis.title.x = element_text(face="plain", color="black",size=20),
            axis.title.y = element_text(face="plain", color="black",size=20))
    

    另外就是对一副图中的标题名称的调整,这里也是通过theme()函数调整调整,区别是这里主要通过strip函数调整,比如如下命令:

    theme(panel.grid = element_blank(), panel.background = element_rect(fill = 'transparent', color = 'black'), legend.title = element_blank(), legend.key = element_blank(),strip.text = element_text(size = 20),strip.background = element_rect(fill = NA, colour = NA),strip.text.y = element_blank())
    

    strip.text:主要调整标题大小或者颜色。
    strip.background:标题的背景颜色,可以选择颜色或者调整边框颜色。
    strip.text.y或者strip.text.x:调整x轴或者y轴标题。示范画图只有x轴,因此如果设置为element_blank(),将不显示标题。
    scales :是分页画图中非常重要的一个命令,如果是scales = 'free',则表明每一副图将根据各自的数据调整图的内容,但是如果这样的话,各个图的坐标轴将不一样,如果想要将各个图的坐标设置一样,将不能设置free,该参数可以对某个坐标轴进行设定,其值可以等于 'free_x'和'free_x'。


    调整后分页图

    上面介绍的所有数据都在一个矩阵中画分页图,但是如果数据不能在一个矩阵,该如何呢?可以看看plot_grid函数,plot_grid(p1, p2,p3, labels = c("A", "B", "C"), ncol = 2, nrow = 2).

      plot_grid(..., plotlist = NULL, align = c("none", "h", "v", "hv"),
           axis = c("none", "l", "r", "t", "b", "lr", "tb", "tblr"),
           nrow = NULL, ncol = NULL, rel_widths = 1, rel_heights = 1,
           labels = NULL, label_size = 14, label_fontfamily = NULL,
           label_fontface = "bold", label_colour = NULL, label_x = 0,
           label_y = 1, hjust = -0.5, vjust = 1.5, scale = 1, cols = NULL,
           rows = NULL)
    
    部分参数说明

    参考文档

    参考博客:ggplot2画分面图
    官方参数说明:Wrap a 1d ribbon of panels into 2d
    facet_wrap分页画图一些参数微调说明
    plot_grid简单的说明示范

    相关文章

      网友评论

        本文标题:ggplot画分页图

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