R语言ggplot2数据可视化

本系列为R语言进阶版学习,包含《R数据科学》的代码笔记及课后习题,已收录至“R数据科学”专栏,空余时间会持续更新。

第一部分 探索

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

准备工作:安装并加载tidyverse包

install.packages("tidyverse")
library("tidyverse") #ggplot2是tidyverse的核心R包,使用ggplot2前可以先加载tidyverse包

使用ggplot做个简单的散点图:

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

在这里插入图片描述

  • 练习:
  1. 运行ggplot(data = mpg)
ggplot(data = mpg)
  1. 数据集mpg有几行几列
view(mpg) #查看完整数据框
head(mpg) #查看前6行数据
tail(mpg) #查看后6行数据
nrow(mpg) #查看mpg行数
ncol(mpg) #查看mpg列数
dim(mpg) #查看mpg行列数
glimpse(mpg) #查看数据框信息,其中包含行列数
  1. 变量drv的意义是什么?使用?mpg命令阅读帮助文件以找出答案
help(mpg) 
#drv:the type of drive train, where f = front-wheel drive, r = rear wheel drive, 4 = 4wd
  1. 使用hwy和cyl绘制一张散点图
ggplot(data = mpg)+
  geom_point(mapping = aes(x = cyl,y = hwy))
ggplot(mpg,aes(x = cyl,y = hwy))+
  geom_point()

在这里插入图片描述

  1. 如果使用class和drv绘制散点图,会发生什么情况?为什么这张图没什么用处?
ggplot(data = mpg)+
  geom_point(mapping = aes(x = class,y = drv)) #class和drv为分类变量,并存在重复,不适合用散点图展示
ggplot(mpg,aes(x = class,y = drv))+
  geom_point()

#散点图不显示观测值数量,因此当所有x,y为唯一值时,最适合绘制简单散点图

在这里插入图片描述

count(mpg, drv, class) #快速查看变量类型和数量
# 结果:
# A tibble: 12 × 3
   drv   class          n
   <chr> <chr>      <int>
 1 4     compact       12
 2 4     midsize        3
 3 4     pickup        33
 4 4     subcompact     4
 5 4     suv           51
 6 f     compact       35
 7 f     midsize       38
 8 f     minivan       11
 9 f     subcompact    22
10 r     2seater        5
11 r     subcompact     9
12 r     suv           11
  • 扩展:

① 使用count可绘制带有观测值大小的散点图

ggplot(mpg,aes(x = class,y = drv))+
  geom_count()

在这里插入图片描述

② 使用色标显示观测值

mpg %>%
  count(class, drv) %>%
  ggplot(aes(x = class, y = drv))+
  geom_tile(mapping = aes(fill = n))

在这里插入图片描述

③ 补全空白区域

mpg %>%
  count(class, drv) %>%
  complete(class, drv, fill = list(n = 0)) %>% #使用n=0的色标填补空白区域
  ggplot(aes(x = class,y = drv))+
  geom_tile(mapping = aes(fill = n))

在这里插入图片描述

1.3 图形属性映射

ggplot(data = mpg)+
  geom_point(mapping = aes(x = displ, y = hwy, color = class)) #以class颜色分类

在这里插入图片描述

ggplot(data = mpg)+
  geom_point(mapping = aes(x = displ, y = hwy, size = class)) #以class尺寸分类

在这里插入图片描述

ggplot(data = mpg)+
  geom_point(mapping = aes(x = displ, y = hwy, alpha = class)) #以class透明度分类

在这里插入图片描述

ggplot(data = mpg)+
  geom_point(mapping = aes(x = displ, y = hwy, shape = class)) #以class形状分类

在这里插入图片描述

注意:ggplot2只能同时使用6种形状,当超过6种时候,多出的变量将不会显示在图中

aes() #可以将图层中每个图形属性映射集合在一起,然后传递给该图层的映射参数。
ggplot(data = mpg)+
  geom_point(mapping = aes(x = displ,y = hwy), color = "blue") #手动设计图形属性,让图中所有点为蓝色

在这里插入图片描述

形状用数值表示,如下图所示:有些形状相同,比如0、15和22都是正方形。区别在于color和fill这两个图形属性。空心形状(0-14)的边界颜色由color决定;实心形状(15-20)的填充颜色由color决定;填充形状(21~24)的边界颜色由color决定,填充颜色由fill决定
在这里插入图片描述

  • 练习:
  1. 以下这段代码有什么错误?为什么点不是蓝色的?
ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy, color = "blue"))
#此处color是包含在aes映射参数中,没有把blue当作颜色,而是把blue当作分类变量了,只取了一个blue值

在这里插入图片描述

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

在这里插入图片描述

ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy, color = 1:234))
#将color取值为1,1:234效果同上

在这里插入图片描述

  1. mpg中哪些变量是分类变量?哪些变量是连续变量?(提示:输入?mpg来阅读这个数据集的文档)当调用mpg时,如何才能看到这些信息?
mpg #<chr>为分类变量,<int>、<dbl>为连续型变量
glimpse(mpg) #使用glimpse()函数可以简洁的显示数据框每列的属性
  1. 将一个连续变量映射为color、size 和shape。对分类变量和连续变量来说,这些图形属性的表现有什么不同?
ggplot(mpg, aes(x = displ, y = hwy, color = cty))+
  geom_point() #映射为color

在这里插入图片描述

ggplot(mpg, aes(x = displ, y = hwy, size = cty))+
  geom_point() #映射为size

在这里插入图片描述

ggplot(mpg, aes(x = displ, y = hwy, shape = cty)) +
  geom_point() #此时会报错,因为cty为连续型变量,将它映射到形状上时是无法区分不同形状对应的大小顺序的
  1. 如果将同一个变量映射为多个图形属性,会发生什么情况?
ggplot(mpg, aes(x = displ, y = hwy, color = cty, size = displ))+
  geom_point() 

将单个变量映射到多个变量是冗余信息,所以在大多数情况下尽量避免将单个变量映射到多个变量
在这里插入图片描述

  1. stroke这个图形属性的作用是什么?它适用于哪些形状?(提示:使用?geom_point 命令。)
#作用是调整边框粗细
ggplot(mtcars, aes(wt, mpg))+
  geom_point
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值