打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
第一部分探索
1.1 简介
tidyverse的一个核心R包--ggplot2
首先安装tidyverse
install.packages("tidyverse")
其次要加载tidyverse:
library(tidyverse)
R包只需安装一次,但每次开始新会话时都要重新加载。
1.2 第一步
1.2.1 mpg数据框
数据框:是变量(列)和观测(行)的矩形集合。
mpg:包含了由美国环境保护协会收集的38种车型的观测数据。
mpg
?mpg:了解更多关于mpg的信息,每个变量代表什么。举例:displ: 引擎大小,单位为升;hwy: 汽车在高速公路上行驶时的燃油效率,单位为英里/加仑。效率高耗油少效率低耗油多。1.2.2 创建ggplot图形
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy))
1.jpeg
提示: displ和hwy之间是负相关=大引擎更耗油
ggplot(data=mpg) 创建一张空白图
函数geom_point()=创建散点图
ggplot2中每个几何对象函数都有一个mapping参数。mapping参数总是与aes()函数成对出现,aes()函数的x参数和y参数分别指定了映射到x轴的变量与映射到y轴的变量。1.2.3 绘图模板
ggplot(data=<DATA>)+
<GEOM_FUNCTION>(mapping=aes(<MAPPINGS>))
接下来的部分是展示如何完成并扩展这个模板,以制作出各种类型的图。
1.3 图形属性映射
定义/概念学习
图形属性:是图中对象的可视化属性,其中包括数据点的大小,形状和颜色。
标度变换:ggplot2会自动为每个变量值分配唯一的图形属性水平的这个过程。
aes():将图层中使用的每个图形属性映射集合在一起,然后传递给该图层的映射参数
举例1:将点的颜色映射为变量class,从而揭示每辆汽车的类型:
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy, color=class))
2
举例2:将无序变量class映射为有序图形属性size:
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy, size=class))
3
举例3:将变量class映射为不同点透明度:
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy, alpha=class))
4
举例4:将变量class映射为不同形状:
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy, shape=class))
5
“gglot2只能同时使用6种形状”
为几何对象设置图形属性,要在函数aes()的外部进行设置,并为这个图形属性选择一个有意义的值
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy), color="blue")
6
此时颜色不会传达关于变量的信息,只是改变图的外观。
颜色名称是一个字符串;点的大小毫米表示;点的形状是一个数值。
举例说明:
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy), shape=24, color="red",fill="white")
7
8
1.4 常见问题
检查是否输入正确的代码
“+” 必须放在一行代码的末尾,不是开头
运行?函数名或者选定函数名称后按F1键,可以获得任何R函数的帮助信息
阅读错误消息
搜Google
1.5 分面 (特别适合添加分类变量)
1.5.1 函数facet_wrap()
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy))+
facet_wrap(~class, nrow=2)
9
1.5.2 函数facet_grid()
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy))+
facet_wrap(drv ~ cyl)
10
1.6 几何对象
几何对象:图中用来表示数据的几何图形对象。
条形图——条形几何对象
折线图——直线几何对象
箱线图——矩形和直线几何对象
散点图——点几何对象——geom_point
曲线图——平滑曲线几何对象——geom_smooth
ggplot2提供了30多种几何对象,其扩展包甚至提供更多。
举例说明
(一)1条平滑曲线
ggplot(data=mpg)+
geom_smooth(mapping=aes(x=displ,y=hwy))
11
(二)不同线性不同曲线,每条曲线对应映射到线型的变量的一个唯一值
ggplot(data=mpg)+
geom_smooth(mapping=aes(x=displ,y=hwy,linetype=drv))
12
(三)同一张图多个几何对象,向ggplot2()函数添加多个几何对象函数:
举例:
同一张图绘制两种几何对象(点+曲线)
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy))+
geom_smooth(mapping=aes(x=displ,y=hwy))
等于以下代码(上个代码有重复内容)
将一组映射传递给ggplot()函数,ggplot会将这些映射作为全局映射应用到图中的每个几何对象中。
ggplot(data=mpg, mapping = aes(x=displ, y=hwy))+
geom_point()+
geom_smooth()
都是下图:
13
如果将映射放在几何对象函数中,ggplot2会将其看作这个图层的局部映射,仅对该图层有效。
ggplot(data=mpg, mapping = aes(x=displ, y=hwy))+
geom_point(mapping=aes(color=class))+
geom_smooth()
14
为不同图层指定不同的数据
ggplot(data=mpg, mapping = aes(x=displ, y=hwy))+
geom_point(mapping=aes(color=class))+
geom_smooth(data=filter(mpg, class == "subcompact"),se=FALSE)
15
se=standard error, 是否display confidence interval around smooth1.7 统计变换
定义/概念
统计变换 stat (statistical transformation):绘图时用来计算新数据的算法。
每个几何对象函数都有一个默认统计变换,每个统计变换函数都有一个默认几何对象。
举例详述:
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut))
16
?geom_bar显示出stat的默认值是count:这说明geom_bar()使用stat_count()函数可以进行统计变换
继续往下看,可以发现“computed variables”,它告诉我们stat_count()会计算出两个新变量:count(bin中的点数) 和prop(groupwise proportion 比例)
想要显示使用某种统计变换的3个原因如下:
(1) 想要覆盖默认的统计变换
条形高度已经存在与数据,而不是像前一个图一样,条形高度由对行进行计数来生成:
<- 赋值;tibble:简单数据框,用tidyverse中的tibble包实现。
(2) 想要覆盖从统计变换生成的变量到图形属性的默认映射。
举例: 你或许想要显示一张表示比例而不是计数的条形图
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut, y=..prop.., group=1))
17
(3) 在代码中强调统计变换
举例:使用stat_summary()函数将人们的注意力吸引到你计算出的那些摘要统计量上。
ggplot(data=diamonds)+
stat_summary(mapping=aes(x=cut,y=depth),fun.ymin=min,fun.ymax = max, fun.y = median)
18
ggplot2速查表已下载
(https://rstudio.com/resources/cheatsheets/)
示列
1.8 位置调整
(一)为条形图上色
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut, color=cut))
19
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut, fill=cut))
20
如果将图形属性映射到另一个变量(如,clarity),那么条形会自动分块堆叠起来。
每个彩色矩形表示cut和clarit的一种组合。
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut, fill=clarity))
21
这种堆叠是由position参数设定的位置调整功能自动完成的。
(二)如果不想生成堆叠式条形图,还可以使用以下3种选项之一:"identity", "fill", "dodge"。
position = "identity": 将每个对象直接显示在图中。(不太适合条形图,因为重叠)
设置alpha参数为较小的书,可以使得条形略微透明
ggplot(data=diamonds, mapping = aes(x=cut,fill=clarity))+
geom_bar(alpha=1/5, position = "identity")
22
设置fill=NA, 让条形完全透明
ggplot(data=diamonds, mapping = aes(x=cut,color=clarity))+
geom_bar(fill=NA, position = "identity")
23
position = "fill": 效果与堆叠相似(每组条形具有同样的高度)
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut, fill=clarity),position = "fill")
24
-position = "dodge": 将每组中的条形依次并列放置
ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut, fill=clarity),position = "dodge")
25
(三)散点图的位置调整
position = "jitter": 将重叠的点分散开来 = geom_jitter()
ggplot(data = mpg)+
geom_point(mapping = aes(x=displ,y=hwy),position="jitter")
26
1.9 坐标系
- coord_flip()函数:交换x轴和y轴
ggplot(data=mpg, mapping = aes(x=class,y=hwy))+
geom_boxplot()
27
ggplot(data=mpg, mapping = aes(x=class,y=hwy))+
geom_boxplot()+
coord_flip()
28
- coord_quickmap()函数:为地图设置合适的纵横比,适用于空间数据
未安装Package : map所以不能用数据和示例
书里的图
- coord_polar()函数:极坐标系,揭示条形图和鸡冠花图之间的有趣联系
bar <- ggplot(data=diamonds)+
geom_bar(mapping = aes(x=cut,fill=cut),show.legend = FALSE, width = 1)+
theme(aspect.ratio = 1)+
labs(x=NULL, y=NULL)
bar+coord_flip()
29
bar+coord_polar()
30
1.10 图形分层语法
一个正式语法系统(7个参数一同组成了图形语法)
ggplot(data=<DATA>)+<GEOM_FUNCTION>(mapping = aes (<MAPPINGS>),stat = <STAT>, position =<POSITION>+<COORDINATE_FUNCTION>+<FACET_FUNCTION>
如何从头构建一个基本图形
step1 首先要有一个数据集
step2 通过统计变换将其转换为想要显示的信息
step3 选择一个几何对象来表示转换后的数据中的每个观测值
step4 选择几何对象的图形属性来表示数据中的变量
step5 选择放置几何对象的坐标系
step6 进一步调整几何对象在坐标系中的位置(位置调整),将图划分为多个子图(分面)...
使用这种方法可以构建任何图形。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
R学习:R for Data Science(三)
《R数据科学》第1章-ggplot2图层与绘图大法-全
「R」ggplot2数据可视化
了解绘制条形图和折线图的细节
R语言 | 第14期.ggplot2初识
【R分享|实战】科白君浅谈ggplot2包学习逻辑
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服