ggplot2入门大全(从菜鸟到高手)

您所在的位置:网站首页 菜鸟到高手的中间如何表达出来 ggplot2入门大全(从菜鸟到高手)

ggplot2入门大全(从菜鸟到高手)

2024-07-16 09:38| 来源: 网络整理| 查看: 265

在开始ggplot2的学习之前,可以先看下我之前的一篇博客,关于快速作图——qplot

在本章你将学习 1、ggplot2中的mpg数据集2、ggplot2图像的三个基本构成:数据、图形属性和几何对象3、如何将变量映射到图形属性中4、如何指定不同的几何对象绘制各种各样的图形No1、在图中添加平滑曲线No2、箱线图和扰动点图No3、直方图和频数多边形No4、条形图No5、时间序列中的折线图和路径图 5、如何修改坐标轴6、图像文件的其他处理方式,如保存至硬盘写这么多不容易,如果对你有帮助,点个关注吧

1、ggplot2中的mpg数据集

第一步当然是加载ggplot2,读取数据,了解数据。

> library(ggplot2) Warning message: 程辑包‘ggplot2’是用R版本3.6.3 来建造的 > mpg # A tibble: 234 x 11 manufacturer model displ year cyl trans drv cty hwy fl class 1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact 2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact 3 audi a4 2 2008 4 manual(m6) f 20 31 p compact 4 audi a4 2 2008 4 auto(av) f 21 30 p compact 5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact 6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compact 7 audi a4 3.1 2008 6 auto(av) f 18 27 p compact 8 audi a4 quattro 1.8 1999 4 manual(m5) 4 18 26 p compact 9 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25 p compact 10 audi a4 quattro 2 2008 4 manual(m6) 4 20 28 p compact # ... with 224 more rows > str(mpg) Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 234 obs. of 11 variables: $ manufacturer: chr "audi" "audi" "audi" "audi" ... $ model : chr "a4" "a4" "a4" "a4" ... $ displ : num 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ... $ year : int 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ... $ cyl : int 4 4 4 4 6 6 6 4 4 4 ... $ trans : chr "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ... $ drv : chr "f" "f" "f" "f" ... $ cty : int 18 21 20 21 16 18 18 18 16 20 ... $ hwy : int 29 29 31 30 26 26 27 26 25 28 ... $ fl : chr "p" "p" "p" "p" ... $ class : chr "compact" "compact" "compact" "compact" ...

cty 和 hwy 分别记录城市和高速公路驾驶耗油量(英里/加仑)

1 mile=1609.344 m;1 gal=3.785412L

displ 表示发动机排量(L) drv 表示驱动系统:前轮驱动(f)、后轮驱动(r)和四轮驱动(4) model 表示车辆型号,共有38种车型 class 表示车辆类别 全部变量的解释可以参考:mpg数据集内容

2、ggplot2图像的三个基本构成:数据、图形属性和几何对象

ggplot2 图像的三个基本构成: 1、数据 2、图形属性映射 3、几何对象

for example

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

在这里插入图片描述 它展现了由以下三个组件构成的散点图:

1、数据:mpg 2、图形属性映射:displ对应x轴,hwy对应y轴 3、几何对象:散点图

代码就像套公式,ggplot(mpg,aes(x=displ,y=hwy))+geom_point(),数据和图形属性映射包含在ggplot()中,而+可用来添加图层,随着学习的深入,+的东西会越来越丰富。

3、如何将变量映射到图形属性中

先补充一点,下面两行代码是一样的,默认先x后y。

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

然而这样做出来的图并不是我们想要的,因为不够美观。还需要进一步调整,比如:

#ggplot2通过 标度 可以将数据转换为图形属性。 ggplot(mpg,aes(displ,hwy,colour=class))+geom_point()#颜色 ggplot(mpg,aes(displ,hwy,shape=drv))+geom_point()#形状 ggplot(mpg,aes(displ,hwy,size=cyl))+geom_point()#大小

以第一个colour为例,不同类型的车一目了然。 在这里插入图片描述 那么,可以看出什么呢?比如发动机排量(displ)较大的双座车(2seater),油耗却不是最高的,所以固定油耗下行驶距离会更长。

补充一个重点 比较下面两张图像: ggplot(mpg,aes(x=displ,y=hwy))+geom_point(aes(colour="blue")) ggplot(mpg,aes(x=displ,y=hwy))+geom_point(colour="blue")

在这里插入图片描述 在这里插入图片描述 为什么会这样呢?这就是“标度”的作用,可以体会一下,我不太会解释 。

最后,来了解一下“分面”。这个不用解释,目的就是把复杂的数据分一分类,做出来的图更直观。分面有两种类型,网格型和封装型,下面主要讨论更为常用的封装型。

ggplot(mpg,aes(displ,hwy))+geom_point()+facet_wrap(~class)

在这里插入图片描述 加上facet_wrap()即可,括号里是类别,别忘了波浪线~

4、如何指定不同的几何对象绘制各种各样的图形

聪明的你可能已经想到修改geom_point(),来画其他的图,恭喜你猜对了! 下面挑几个常用的图像类型展示一下:

No1、在图中添加平滑曲线 ggplot(mpg,aes(displ,hwy))+geom_point()+geom_smooth()

在这里插入图片描述 灰色部分表示逐点置信区间用以评估不确定性。如果不需要,可以输入geom_smooth(se=FALSE)。

平滑方式并不相同,method="loess"是数据量较小时的默认选项,使用局部拟合回归(可以查阅帮助?loess),曲线的平滑程度由参数span控制,取值范围0(很不平滑)到1(很平滑)。

示例:

ggplot(mpg,aes(displ,hwy))+geom_point()+geom_smooth(method="loess",span=0.2) ggplot(mpg,aes(displ,hwy))+geom_point()+geom_smooth(method="loess",span=1)

在这里插入图片描述

在这里插入图片描述 但是,当数据量n超过1000时,loess并不适用,那该怎么办呢?下次再介绍 😃

我们常用的还有线性拟合,method=“lm”,这个就不存在平滑的问题了。method=“rlm”,也可进行线性拟合,对异常值不敏感,不过需要加载R包MASS,这里就不再做了。

No2、箱线图和扰动点图 ggplot(mpg,aes(drv,hwy))+geom_point()

在这里插入图片描述 不同驱动的车与耗油量的关系。上图的问题是容易出现重叠,数据多了分布看不清楚 ,太low了。 该怎么解决呢?有三种工具,扰动点图、箱线图、小提琴图。

扰动点图:在数据中加入随机噪声避免图形重叠(说实话,这个用的真不多。。) ggplot(mpg,aes(drv,hwy))+geom_jitter()

在这里插入图片描述

箱线图:用若干统计量概括数据分布情况(比较常用) ggplot(mpg,aes(drv,hwy))+geom_boxplot()

在这里插入图片描述

小提琴图:简要展示分布"密度",突出数据分布密集的区域 ggplot(mpg,aes(drv,hwy))+geom_violin()

在这里插入图片描述

每种方法都有优势和不足,根据自己的数据特点选择合适的方法最重要。

No3、直方图和频数多边形 ggplot(mpg,aes(hwy))+geom_histogram(binwidth = 1) ggplot(mpg,aes(hwy))+geom_freqpoly(binwidth = 1) #binwidth为组距,如果不需要均匀组距可以修改 breaks 参数 #不调整组距的话会被默认分为30组

在这里插入图片描述 在这里插入图片描述

No4、条形图

离散变量情形下,条形图和直方图类似:

ggplot(mpg,aes(manufacturer))+geom_bar()

在这里插入图片描述 还有一种条形图是经过预处理的,比较常用。比如三种药品和它们的平均疗效:

drugs


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3