美文网首页
2021-04-24 R数据科学练习题(第一章)

2021-04-24 R数据科学练习题(第一章)

作者: 学习生信的小兔子 | 来源:发表于2021-04-24 13:52 被阅读0次

    第一章 使用ggplot2进行数据可视化

    练习

    (1)运行ggplot(data = mpg),你会看到什么?

    library(ggplot2)
    ggplot(data = mpg)
    ##是一个空白的画板
    
        ![image-20210424083110790](https://img.haomeiwen.com/i25205178/e89d76001823702d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    (2)数据集mpg中有多少行?有多少列

    #四种查看方法
    dim(mpg)
    str(mpg)
    ncol(mpg)
    nrow(mpg)
    library(tibble)
    glimpse(mpg)
    
    (3)变量drv的意义是什么?使用?mpg命令阅读帮助文件找出答案
    
    #?mpg
    #drv
    #the type of drive train, where f = front-wheel drive, r = rear wheel drive, #4 = 4wd
    

    (4)使用hwy和cyl绘制一张散点图

     ggplot(mpg)+geom_point(mapping = aes(x=hwy,y=cyl))
    
    image-20210424083953351
    (5)如果使用class和drv绘制散点图,会发生什么情况?为什么这张图没什么用处?
    
    ggplot(mpg)+geom_point(mapping = aes(x=class,y=drv))
    ##每种汽车类型对应的驱动类型,两个变量都是分类变量。
    
    image-20210424084309154

    1.3练习

    (1)以下这段代码有什么错误?为什么点不是蓝色的?

    ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy,color='blue'))
    #正确代码
    ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy),color='blue')    
    
    image-20210424085818448 image-20210424090029239

    (2)mpg中的那些分量是分类变量?哪些变量是连续变量?(提示:输入?mpg来阅读这个数据集的文档)当调用mpg时,如何才看到这些信息?

    ?mpg
    str(mpg)
    tibble[,11] [234 x 11] (S3: tbl_df/tbl/data.frame)
     $ manufacturer: chr [1:234] "audi" "audi" "audi" "audi" ...
     $ model       : chr [1:234] "a4" "a4" "a4" "a4" ...
     $ displ       : num [1:234] 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
     $ year        : int [1:234] 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
     $ cyl         : int [1:234] 4 4 4 4 6 6 6 4 4 4 ...
     $ trans       : chr [1:234] "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
     $ drv         : chr [1:234] "f" "f" "f" "f" ...
     $ cty         : int [1:234] 18 21 20 21 16 18 18 18 16 20 ...
     $ hwy         : int [1:234] 29 29 31 30 26 26 27 26 25 28 ...
     $ fl          : chr [1:234] "p" "p" "p" "p" ...
     $ class       : chr [1:234] "compact" "compact" "compact" "compact" ...
    #分类变量chr;连续变量int
    

    (3)将一个连续变量映射为color,size和shape。对分类变量和连续变量来说,这些图形的属性的表现有什么不同?

    #分类变量
    ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy,color=trans))
    ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy,size=trans))
    ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy,shape=trans))
    #连续变量
    ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy,color=year))#连续变量使用的是一种颜色,从浅到深
    ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy,size=year))#一个区间的size对应不同的变量
    ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy,shape=year))#连续变量映射到shape中会报错
    
    image-20210424091853469 image-20210424091908031 image-20210424091928281 image-20210424092116367 image-20210424092133206

    (4)如果将同一个变量映射为多个图形属性,会发生什么情况

    ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy,shape=trans,size=trans,color=trans))
    
    image-20210424092749055

    (5)stroke这个图形属性的作用是什么?它适用于哪些形状?(提示:试用?geom_point命令)

    ggplot(mtcars, aes(wt, mpg)) +
      geom_point(shape = 21, colour = "black", fill = "white", size = 5, stroke = 1)
    ggplot(mtcars, aes(wt, mpg)) +
      geom_point(shape = 21, colour = "black", fill = "white", size = 5, stroke = 5)
    ggplot(mtcars, aes(wt, mpg)) +
      geom_point(shape = 21, colour = "black", fill = "white", size = 5, stroke =10)
    #调整边框的样式 21-24的图形样式。
    
    image-20210424093424932 image-20210424093440566 image-20210424093454658

    (6)如果将图形属性映射为非变量名对象,比如aes(color=dospl<5),会发生什么情况?

    ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy,color =displ<5))
    
    image-20210424093811438

    1.5

    (1)如果使用连续变量进行分面,会发生什么情况

    ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy))+facet_wrap(~cty)
    ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy))+facet_wrap(~displ)
    #会使图形异常的小
    
    image-20210424095159637 image-20210424095219778

    (2)在使用facet_grid(drv~cyl)生成的图中,空白单元的意义是什么?它们和以下代码生成的图有什么关系?

    ggplot(mpg)+geom_point(mapping = aes(x=drv,y=cyl))
    ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy))+facet_grid(drv~cyl)
    ##空白单元代表没有drv和cyl的值对应的组合
    
    image-20210424095929549 image-20210424100130428

    (3)试试以下代码会绘制出什么图?.的作用是什么?

    .的作用表示不在行或列的维度分面。

    .在前表示不按行分面,在后表示不按列分面。

    ggplot(data = mpg) +
      geom_point(mapping = aes(x = displ, y = hwy)) +
      facet_grid(drv ~ .)
      
      ggplot(data = mpg) +
      geom_point(mapping = aes(x = displ, y = hwy)) +
      facet_grid(. ~ cyl)
    
    
    image-20210424100712117 image-20210424100804153

    (4)查看本节的第一个分面图:

    ggplot(data = mpg) +
      geom_point(mapping = aes(x=displ, y = hwy)) +
      facet_wrap(~ class, nrow = 2)
    
    image-20210424101008190

    与使用图形属性相比,使用分面的优势和劣势分别是什么?如果有一个更大的数据集,你将如何权衡这两种方法的优劣?

    • 优势:根据想要观测的变量将数据分为每一分页,显示出了每一分页中的趋势及不同分页之间的差别
    • 劣势:由于数据被分割为一个个的分页,数据整体的趋势就不能看出来了。
    • 根据目的来评判,如果看整体趋势,就不用分页。如果看单个变量的变化趋势,就可以使用分页

    (5)阅读?facet_wrap的帮助页面,nrow和ncol的功能分别是什么?还有哪些选项可以控制分面的布局?为什么函数facet_grid()没有变量nrow和ncol?

    nrow和ncol分别代表分页的行数和列数

    facet_grid只会是单列或者单行,不需要这两个参数

    1.6 练习

    (1)在绘制折线图、箱线图、直方图、和分区图时,应该分别使用哪种几何对象?

    • geom_line
    • geom_boxplot
    • geom_histogram
    • facet_grid

    (2)在脑海中运行以下代码,并预测会有何种输出。接着在R中运行代码,并检查你的预测是否正确。

    ggplot(data = mpg,
           mapping = aes(x = displ,y = hwy, color = drv)
           ) +
      geom_point() +
      geom_smooth(se = FALSE)
      # se是否显示置信区间?(默认为TRUE。)ggplot(data = mpg,
           mapping = aes(x = displ,y = hwy, color = drv)
           ) +
      geom_point() +
      geom_smooth()
    
    image-20210424102233214 image-20210424102313253

    (3)show.legend = FALSE的作用是什么?删除它会发生什么情况?你觉得我为什么要在本章前面的示例中使用这句代码?

    ggplot(data = mpg) +
      geom_smooth(
        mapping = aes(x = displ, y = hwy, color = drv) ,
        show.legend = TRUE
      )
      
      #看着都一样呀 不懂
    
    image-20210424102511363

    (4)geom_smooth() 函数中的 se 参数的作用是什么?

    se:是否显示置信区间?(默认为TRUE。)

    5.以下代码生成的两张图有什么区别吗?为什么?

    ggplot(data=mpg,mapping = aes(x=displ,y=hwy))+
      geom_point()+
      geom_smooth()
      
    ggplot()+
    geom_point(data = mpg,mapping = aes(x=displ,y=hwy))+
    geom_smooth(data=mpg,mapping = aes(x=displ,y=hwy))
      
    #我没看出区别。。。。
    
    image-20210424102843973 image-20210424103035433

    6.自己编写 R 代码来生成以下各图。

    rm(list=ls())
    p1 <- ggplot(data = mpg,mapping = aes(x=displ,y=hwy))+
      geom_point(size=2.5)+
      geom_smooth(se=F,size=1.5)
    p2 <- ggplot(mpg,mapping = aes(x=displ,y=hwy))+
      geom_point(size=2.5)+
      geom_smooth(size=1.5,se=F,mapping=aes(group=drv))
    p3 <- ggplot(data=mpg,mapping = aes(x=displ,y=hwy,color=drv))+
      geom_point(size=2.5)+
      geom_smooth(se=F,size=1.5,mapping=aes(group=drv))
    p4 <- ggplot(mpg,mapping = aes(x=displ,y=hwy))+
      geom_smooth(se=F,size=1.5)+
      geom_point(size=2.5,mapping=aes(color=drv))
    p5 <- ggplot(mpg,mapping = aes(x=displ,y=hwy))+
      geom_smooth(se=F,size=1.5,mapping=aes(linetype=drv))+
      geom_point(size=2.5,mapping=aes(color=drv))
    p6 <- ggplot(mpg,mapping=aes(x=displ,y=hwy))+
      geom_point(size=2.5,mapping = aes(color=drv))
    
    library(patchwork)
    p1+p2+p3+p4+p5+p6+plot_layout(nrow=3)+plot_annotation(tag_levels = 'A')
    
    image-20210424112932554

    222

    1.7

    (1)stat_summary() 函数的默认几何对象是什么?不使用统计变换函数的话,如何使用几何对象函数重新生成以上的图?

    ggplot(diamonds)+
      stat_summary(
        mapping = aes(x=cut,y=depth),
        fun.ymin = min,
        fun.ymax = max,
        fun.y=median
      )
      
    
    image-20210424115558600
    ##   默认几何对象为pointrange
    ggplot(data = diamonds) +
      geom_pointrange(
        mapping = aes(x = cut, y = depth),
        stat = "summary",
        fun.min = min,
        fun.max = max,
        fun = median
      )
    #和上图一样
    

    (2)geom_col() 函数的功能是什么?它和 geom_bar() 函数有何不同?

    • geom_col()针对常规的柱状图,既给x,也给y
    • geom_bar()针对计数的柱状图,只给x

    (3)多数几何对象和统计变换都是成对出现的,总是配合使用。仔细阅读文档,列出所有成对的几何对象和统计变换。它们有什么共同之处?

    暂时还不太懂

    (4)stat_smooth() 函数会计算出什么变量?哪些参数可以控制它的行为?

    ?stat_smooth() 
    
    image-20210424120045649

    (5)在比例条形图中,我们需要设定 group = 1 ,这是为什么呢?换句话说,以下两张图会有什么问题?

    group = 1表示讲这些类别之和作为1,进行按比例画柱状图

    ggplot(diamonds)+
      geom_bar(mapping=aes(x=cut,y=..prop..,group=1))
    
    image-1
    ggplot(diamonds)+
      geom_bar(mapping=aes(x=cut,y=..prop..))
    
    image-2.png
    ggplot(data = diamonds) +
      geom_bar(
        mapping = aes(x = cut, fill = color, y = ..prop..)
          )
    
    image-3.png

    1.8练习
    (1)以下图形有什么问题?应该如何改善?

    ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
      geom_point()
    
    1.png
    # 因为舍入取整,造成很多点彼此重叠,因此需要添加随机扰动,ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
      geom_point(position = "jitter")
    
    2.png

    (2)geom_jitter() 使用哪些参数来控制抖动的程度?

    水平(width),竖直(height)两个参数

    (3)对比 geom_jitter() 与 geom_count() 。

    p1 <- ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
      geom_count()
    p2 <- ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
      geom_jitter()
    library(patchwork)
    p1+p2
    
    comparsion.png

    (4)geom_boxplot() 函数的默认位置调整方式是什么?创建 mpg 数据集的可视化表示来演示一下。

    ?geom_boxplot
    position = “dodge2”
    
    ggplot(data = mpg, mapping = aes(x = drv, y = hwy)) +
      geom_boxplot()
    
    example.png

    (1)使用 coord_polar() 函数将堆叠式条形图转换为饼图。

    ggplot(data = diamonds) +
      geom_bar(mapping = aes(x = cut, fill = clarity)) +
      coord_polar()
    
    1.png

    (2)labs() 函数的功能是什么?阅读一下文档。

    ?labs
    用于显示标题,标签,图例。

    (3)coord_quickmap() 函数和 coord_map() 函数的区别是什么?

    coord_quickmap() 使用一种更快的近似地图投影。这种近似忽略掉地球的弯曲度并调整经纬度的比例。coord_map() 将3D地图垂直投影到2D平面上,使用的是墨卡托投影。前者更优更快。

    (4)下图表明城市和公路燃油效率之间有什么关系?为什么 coord_fixed() 函数很重要?geom_abline() 函数的作用是什么?

    ggplot(mpg,mapping = aes(x=cty,y=hwy))+
      geom_point()+
      geom_abline()+
      coord_fixed()
    
    4.png

    cty: city miles per gallon.一加仑油行驶的距离越远,则燃油效率越高。
    ·coord_fixed()坐标系纵横比可以设置固定,纵横比可以用参数ratio自定义,背景为矩形格子,固定纵横比后,无论什么图形,其比例都是一样的,常用于横轴,纵轴都是数字的情况
    ·回归曲线
    参考:http://www.360doc.com/showweb/0/0/973875577.aspx

    相关文章

      网友评论

          本文标题:2021-04-24 R数据科学练习题(第一章)

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