美文网首页
R 函数学习- facet_wrap,facet_grid

R 函数学习- facet_wrap,facet_grid

作者: Thinkando | 来源:发表于2020-03-28 18:09 被阅读0次

    ggplot2的分面有两种方式,分别使用 facet_wrap 或 facet_grid 函数。

    准备工作

    library(ggplot2)
    set.seed(100)
    d.sub <- diamonds[sample(nrow(diamonds), 500), ]
    head(d.sub, 4)

    ##       carat       cut color clarity depth table price    x    y    z
    ## 16601  1.01 Very Good     D     SI1  62.1    59  6630 6.37 6.41 3.97
    ## 13899  0.90     Ideal     D     SI1  62.4    55  5656 6.15 6.19 3.85
    ## 29792  0.30     Ideal     D     SI1  61.6    56   709 4.34 4.30 2.66
    ## 3042   0.30 Very Good     G     VS1  62.0    60   565 4.27 4.31 2.66
    

    theme_set(theme_bw())
    p <- ggplot(data=d.sub, aes(x=carat, y=price))
    1 缠绕分面 facet_wrap
    facet_warp 即“缠绕分面”,对数据分类只能应用一个标准,不同组数据获得的小形按从左到右从上到下的“缠绕”顺序进行排列:

    levels(d.sub$cut)
    ## [1] "Fair"      "Good"      "Very Good" "Premium"   "Ideal"
    p  + geom_point() + facet_wrap(~cut)
    
    image.png

    显然这是对数据进行分组后绘制得到的图形,这类图形对于比较不同数据的趋势非常有帮助。facet_wrap 的参数如下:

    非运行代码

    facet_wrap(facets, nrow = NULL, ncol = NULL, scales = "fixed",
               shrink = TRUE, as.table = TRUE, drop = TRUE)
    

    facets:分面参数如 ~cut,表示用 cut 变量进行数据分类
    nrow:绘制图形的行数
    ncol:绘制图形的列数,一般nrow/ncol只设定一个即可
    scales:坐标刻度的范围,可以设定四种类型。fixed 表示所有小图均使用统一坐标范围;free表示每个小图按照各自数据范围自由调整坐标刻度范围;free_x为自由调整x轴刻度范围;free_y为自由调整y轴刻度范围。
    shrinks:也和坐标轴刻度有关,如果为TRUE(默认值)则按统计后的数据调整刻度范围,否则按统计前的数据设定坐标。
    as.table:和小图排列顺序有关的选项。如果为TRUE(默认)则按表格方式排列,即最大值(指分组level值)排在表格最后即右下角,否则排在左上角。
    drop:是否丢弃没有数据的分组,如果为TRUE(默认),则空数据组不绘图。

    2 格网分面 facet_grid
    格网分面可以应用多个标准对数据进行分组。还是先看看效果:

    qplot(carat, price, data=diamonds, alpha=I(0.2)) + facet_grid(color~cut)


    image.png

    显然参数 color~cut 对数据的分组和小图排列有决定作用,波浪号前为小图分行标准,后面为分列标准。facet_grid 的完整用法为:

    非运行代码

    facet_grid(facets, margins = FALSE, scales = "fixed", space = "fixed", shrink = TRUE,
    labeller = "label_value", as.table = TRUE, drop = TRUE)
    和facet_wrap比较,除不用设置ncol和nrow外(facets公式已经包含)外还有几个参数不同:

    margins
    注意:这不是设定图形边界的参数。它是指用于分面的包含每个变量元素所有数据的数据组。

    qplot(carat, price, data=diamonds, alpha=I(0.2)) + facet_grid(color~cut, margins=TRUE)

    space
    这个参数要配合scales使用,如果为fixed(默认),所有小图的大小都一样,如果为free/free_x/free_y,小图的大小将按照坐标轴的跨度比例进行设置。

    qplot(carat, price, data=diamonds, alpha=I(0.2)) + facet_grid(color~cut, space="free_x", scales="free_x")

    labeller
    这是设定小图标签的,facet_grid的函数说明档讲得比较明白,参考之。或许会在后面介绍。

    下面简单看看2个以上分组标准获得什么样的图:

    qplot(carat, price, data=diamonds, alpha=I(0.2)) + facet_grid(color+clarity~cut)

    https://blog.csdn.net/u014801157/article/details/24372507

    相关文章

      网友评论

          本文标题:R 函数学习- facet_wrap,facet_grid

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