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

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

练习

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

library(ggplot2)
ggplot(data = mpg)
##是一个空白的画板
    ![image-20210424083110790](https://upload-images.jianshu.io/upload_images/25205178-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))
2021-04-24 R数据科学练习题(第一章)_第1张图片
image-20210424083953351
(5)如果使用class和drv绘制散点图,会发生什么情况?为什么这张图没什么用处?
ggplot(mpg)+geom_point(mapping = aes(x=class,y=drv))
##每种汽车类型对应的驱动类型,两个变量都是分类变量。
2021-04-24 R数据科学练习题(第一章)_第2张图片
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')    
2021-04-24 R数据科学练习题(第一章)_第3张图片
image-20210424085818448
2021-04-24 R数据科学练习题(第一章)_第4张图片
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中会报错
2021-04-24 R数据科学练习题(第一章)_第5张图片
image-20210424091853469
2021-04-24 R数据科学练习题(第一章)_第6张图片
image-20210424091908031
2021-04-24 R数据科学练习题(第一章)_第7张图片
image-20210424091928281
2021-04-24 R数据科学练习题(第一章)_第8张图片
image-20210424092116367
2021-04-24 R数据科学练习题(第一章)_第9张图片
image-20210424092133206

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

ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy,shape=trans,size=trans,color=trans))
2021-04-24 R数据科学练习题(第一章)_第10张图片
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的图形样式。
2021-04-24 R数据科学练习题(第一章)_第11张图片
image-20210424093424932
2021-04-24 R数据科学练习题(第一章)_第12张图片
image-20210424093440566
2021-04-24 R数据科学练习题(第一章)_第13张图片
image-20210424093454658

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

ggplot(mpg)+geom_point(mapping = aes(x=displ,y=hwy,color =displ<5))
2021-04-24 R数据科学练习题(第一章)_第14张图片
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)
#会使图形异常的小
2021-04-24 R数据科学练习题(第一章)_第15张图片
image-20210424095159637
2021-04-24 R数据科学练习题(第一章)_第16张图片
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的值对应的组合
2021-04-24 R数据科学练习题(第一章)_第17张图片
image-20210424095929549
2021-04-24 R数据科学练习题(第一章)_第18张图片
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)

2021-04-24 R数据科学练习题(第一章)_第19张图片
image-20210424100712117
2021-04-24 R数据科学练习题(第一章)_第20张图片
image-20210424100804153

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

ggplot(data = mpg) +
  geom_point(mapping = aes(x=displ, y = hwy)) +
  facet_wrap(~ class, nrow = 2)
2021-04-24 R数据科学练习题(第一章)_第21张图片
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()
2021-04-24 R数据科学练习题(第一章)_第22张图片
image-20210424102233214
2021-04-24 R数据科学练习题(第一章)_第23张图片
image-20210424102313253

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

ggplot(data = mpg) +
  geom_smooth(
    mapping = aes(x = displ, y = hwy, color = drv) ,
    show.legend = TRUE
  )
  
  #看着都一样呀 不懂
2021-04-24 R数据科学练习题(第一章)_第24张图片
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))
  
#我没看出区别。。。。
2021-04-24 R数据科学练习题(第一章)_第25张图片
image-20210424102843973
2021-04-24 R数据科学练习题(第一章)_第26张图片
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')
2021-04-24 R数据科学练习题(第一章)_第27张图片
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
  )
  
2021-04-24 R数据科学练习题(第一章)_第28张图片
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() 
2021-04-24 R数据科学练习题(第一章)_第29张图片
image-20210424120045649

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

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

ggplot(diamonds)+
  geom_bar(mapping=aes(x=cut,y=..prop..,group=1))
2021-04-24 R数据科学练习题(第一章)_第30张图片
image-1
ggplot(diamonds)+
  geom_bar(mapping=aes(x=cut,y=..prop..))
2021-04-24 R数据科学练习题(第一章)_第31张图片
image-2.png
ggplot(data = diamonds) +
  geom_bar(
    mapping = aes(x = cut, fill = color, y = ..prop..)
      )
2021-04-24 R数据科学练习题(第一章)_第32张图片
image-3.png

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

ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
  geom_point()
2021-04-24 R数据科学练习题(第一章)_第33张图片
1.png
# 因为舍入取整,造成很多点彼此重叠,因此需要添加随机扰动,ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
  geom_point(position = "jitter")
2021-04-24 R数据科学练习题(第一章)_第34张图片
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
2021-04-24 R数据科学练习题(第一章)_第35张图片
comparsion.png

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

?geom_boxplot
position = “dodge2”

ggplot(data = mpg, mapping = aes(x = drv, y = hwy)) +
  geom_boxplot()
2021-04-24 R数据科学练习题(第一章)_第36张图片
example.png

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

ggplot(data = diamonds) +
  geom_bar(mapping = aes(x = cut, fill = clarity)) +
  coord_polar()
2021-04-24 R数据科学练习题(第一章)_第37张图片
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()
2021-04-24 R数据科学练习题(第一章)_第38张图片
4.png

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

你可能感兴趣的:(2021-04-24 R数据科学练习题(第一章))