r4ds学习笔记之ggplot2

作者: taoyan | 来源:发表于2017-07-01 17:55 被阅读147次

    前提
    ggplot2简介
    美学映射Aesthetic Mappings
    SessionInfo

    为了进一步加强以及整合自己data science的能力,最近打算在我的博客开辟一个新类r4ds,专门用来记录学习Hadley Wickham大神的新作R for Data Science的读书笔记。该书推荐我们入门data science可以从可视化开始,这也是该书目录布局的第一章。因此开始学习R语言可视化。
    前提


    本章主要聚焦于可视化包ggplot2,为了写这本书,大神专门整合了一系列神包成为一个包tidyverse,因此第一步就是要先安装该包并加载。

    #install tidyverse
    install.packages("tidyverse")
    #load tidyverse
    library(tidyverse)
    

    ggplot2简介

    利用数据集mpg来探究发动机大小跟好友耗油是否存在某种关系,先check一下该数据集。

    head(mpg)
    

    在各个变量中:

    • disp:车发动机大小
    • hwy:衡量耗油率的一个指标,更多信息可?mpg查看

    要探究displ与hwy的关系,最快就是画个图了

    ggplot(data=mpg)+ geom_point(mapping = aes(x=displ, y=hwy))
    

    图中显示两者呈现负相关,disp越大,hwy越低。
    ggplot2绘图规则主要如下:
    ggplot(data=<DATA>)+
         <GEOM_FUNCTION>(mapping=aes(>MAPPINGS>))
    

    ggplot()会创建一个底板,然后可以通过geom_function()不断地添加图形元素,进行丰富。

    p <- ggplot(mpg)#create an empty graph
    p+geom_point(aes(x=displ, y=hwy))#add a layer to the empty graph
    

    美学映射Aesthetic Mappings

    美学映射在ggplot2中是一个十分重要的概念,比如前文我们将displ、hwy分别映射给x、y轴,同时还可以用来控制图形元素大小、形状、颜色等属性。

    ggplot(mpg)+ 
    geom_point(aes(x=displ, y=hwy, color=class))#将class映射给颜色属性,这样不同class就表现不同颜色
    

    可以看到,通过颜色映射ggplot2会自动创建一个legend,需要注意的是这里颜色颜色我们是利用class,这是一个离散性变量,如果我们将之映射给点的size,则会出现warning,至于原因,看warning。
    ggplot(mpg)+ geom_point(aes(x=displ, y=hwy, size=class))
    

    或者将class映射给alpha参数,这是一个控制点透明度的参数;shape是一个控制形状的参数

    ggplot(mpg)+ geom_point(aes(x=displ, y=hwy, alpha=class))
    
    ggplot(mpg)+ geom_point(aes(x=displ, y=hwy, shape=class))
    

    发现当映射shape其中SUV是没有形状的,这是因为ggplot2只默认6种形状,这个问题后续解决。 需要注意的是映射参数必须在aes(),不然就无法映射。
    ggplot(mpg)+ geom_point(aes(x=displ, y=hwy), color="blue")#all the points are blue
    

    今天就讲到这,下次继续
    SessionInfo


    sessionInfo()
    ## R version 3.4.1 (2017-06-30)
    ## Platform: x86_64-w64-mingw32/x64 (64-bit)
    ## Running under: Windows 8.1 x64 (build 9600)
    ## 
    ## Matrix products: default
    ## 
    ## locale:
    ## [1] LC_COLLATE=Chinese (Simplified)_China.936 
    ## [2] LC_CTYPE=Chinese (Simplified)_China.936 
    ## [3] LC_MONETARY=Chinese (Simplified)_China.936
    ## [4] LC_NUMERIC=C ## [5] LC_TIME=Chinese (Simplified)_China.936 
    ## 
    ## attached base packages:
    ## [1] stats graphics grDevices utils datasets methods base 
    ## 
    ## other attached packages:
    ## [1] forcats_0.2.0 stringr_1.2.0 dplyr_0.7.1 
    ## [4] purrr_0.2.2.2 readr_1.1.1 tidyr_0.6.3 
    ## [7] tibble_1.3.3 ggplot2_2.2.1 tidyverse_1.1.1.9000
    ## 
    ## loaded via a namespace (and not attached):
    ## [1] Rcpp_0.12.11 cellranger_1.1.0 compiler_3.4.1 
    ## [4] plyr_1.8.4 bindr_0.1 tools_3.4.1 
    ## [7] digest_0.6.12 lubridate_1.6.0 jsonlite_1.5 
    ## [10] evaluate_0.10.1 nlme_3.1-131 gtable_0.2.0 
    ## [13] lattice_0.20-35 pkgconfig_2.0.1 rlang_0.1.1 
    ## [16] psych_1.7.5 rstudioapi_0.6 yaml_2.1.14 
    ## [19] parallel_3.4.1 haven_1.0.0 bindrcpp_0.2 
    ## [22] xml2_1.1.1 httr_1.2.1 knitr_1.16 
    ## [25] hms_0.3 rprojroot_1.2 grid_3.4.1 
    ## [28] glue_1.1.1 R6_2.2.2 readxl_1.0.0 
    ## [31] foreign_0.8-69 rmarkdown_1.6 modelr_0.1.0 
    ## [34] reshape2_1.4.2 magrittr_1.5 clisymbols_1.2.0 
    ## [37] boxes_0.0.0.9000 backports_1.1.0 scales_0.4.1 
    ## [40] htmltools_0.3.6 rvest_0.3.2 assertthat_0.2.0 
    ## [43] mnormt_1.5-5 colorspace_1.3-2 labeling_0.3 
    ## [46] stringi_1.1.5 lazyeval_0.2.0 munsell_0.4.3 
    ## [49] broom_0.4.2 crayon_1.3.2.9000
    

    相关文章

      网友评论

      • 王诗翔:写了很多跟R相关的内容啊。一个个收录好麻烦,你可以管理下投稿吗?跟R相关的都可以放进专题。
        王诗翔: @taoyan 谢谢啦~😬
        taoyan:@王诗翔 可以!
      • KingR:颜色放aes里面和外面其机理是怎样的不同?
        taoyan:@最后的骄傲 是的啊,如果你将color="red"放入aes中,那么就会形成映射,而ggplot2默认映射的第一种颜色不是红色,而是红紫色好像,因此会像你说的一样两种红色是不同的!
        KingR:@taoyan 我的意思是比如都使用color="red"而非使用变量时,两种方式都是所有元素都是红色,但两种红是不同的。
        taoyan:@最后的骄傲 放里面就是映射,放外面则是所有图形元素都是你设定的颜色
      • taoyan:欢迎大家观看我的博客
        https://ytlogos.github.io/:heart_eyes:

      本文标题:r4ds学习笔记之ggplot2

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