美文网首页js css html
2. 关于ggplot绘图公式复盘的一些问题1

2. 关于ggplot绘图公式复盘的一些问题1

作者: 心惊梦醒 | 来源:发表于2022-08-25 16:21 被阅读0次
    • 对每个aesthetic mapping都有一个scale,所谓scale,就是将data中的variable转换成plot中aesthetics的规则。
    • ggplot2有默认的scales,这些默认的scales可以被覆盖。
    • 这些scales还负责创建guide、axis或legend,便于图片的阅读,将aesthetic vales转换回data values。
    • 不同的aesthetic attribution适合不同类型的variable type,例如 colorshape更适合离散型变量,size更适合连续型变量。但color也有适合离散型数据和连续型数据的调色板,如RcolorBrewer包shape数量有限,对连续型变量来说,会因为被耗尽而出现无法表示的情况。
    • 数据量的大小也会影响aesthetic的使用,当数据点的数量很大时,只用aesthetic mapping很难区分不同的group,此时,facet 是一个可选的解决方案。
    • summary()可帮助查看一个ggplot对象中各层的数据,例如:
    > summary(ggplot(economics, aes(date, unemploy)) + geom_line())
    data: date, pce, pop, psavert, uempmed, unemploy [574x6]
    mapping:  x = ~date, y = ~unemploy
    faceting: <ggproto object: Class FacetNull, Facet, gg>
        compute_layout: function
        draw_back: function
        draw_front: function
        draw_labels: function
        draw_panels: function
        finish_data: function
        init_scales: function
        map_data: function
        params: list
        setup_data: function
        setup_params: function
        shrink: TRUE
        train_scales: function
        vars: function
        super:  <ggproto object: Class FacetNull, Facet, gg>
    -----------------------------------
    geom_line: na.rm = FALSE, orientation = NA
    stat_identity: na.rm = FALSE
    position_identity 
    
    • geom_point(aes(colour = "blue"))geom_point(colour = "blue")的区别是:前者的行为是将color这个aesthetic scale成一个固定的颜色(注意:不是蓝色,此处设置的"blue"还会根据scale规则映射成可视化特性中的颜色,这种设置方式相当于给了color一个向量"blue",后台会将这个向量自动循环补齐到data中observations的个数,等价于geom_point(aes(colour = rep("blue",your_length)))),并增加一个图例(图例中的标签文字=“blue”);后者的行为才是将plot中的所有点都渲染成蓝色。形成这种区别的原因是:前者被包括在aes()中,表示设置的是data中variables和plot中aesthetic之间的关系(即x,y,color是一个级别的);后者被包含在geom_*()中,表示设置的是几何对象的属性,例如,这里的几何对象是point,所以设置color=blue表示将所有的点都画成蓝色的。所以,你必须分清楚操作的对象是什么?variable的属性还是geom的属性。
    • facet_wrap()的第一个参数facets有多种写法:1)一个单边formula;2)一个字符串向量;3)vars()引用的变量名或表达式。例如:
    # 下面的这些写法都是等价的
    p <- ggplot(mpg, aes(displ, hwy)) + geom_point()
    # 单边公式
    p1 <- p + facet_wrap(~cyl+vs)
    # 字符串向量
    p2 <- p + facet_wrap(c("cyl","vs"))
    # vars()引用的变量名,这个函数必须实在数据上下文中使用,单独无法使用?
    p3 <- p + facet_wrap(vars(cyl,vs))
    # 另外,可以使用表达式,先买个坑......
    

    相关文章

      网友评论

        本文标题:2. 关于ggplot绘图公式复盘的一些问题1

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