ggplot2超详细讲解

ggplot2超详细讲解,第1张

"一张统计图形就是从数据到几何对象(geometric object, 缩写为geom, 包括点、线、条形等)的图形属性(aesthetic attributes, 缩写为aes, 包括颜色、形状、大小等)的一个映射。此外, 图形中还可能包含数据的统计变换(statistical transformation, 缩写为stats), 最后绘制在某个特定的坐标系(coordinate system, 缩写为coord)中, 而分面(facet, 指将绘图窗口划分为若干个子窗口)则可以用来生成数据中不同子集的图形。" 源自ggplot2的作者[Hadley Wickham]。

1.数据data和映射mapping

将数据中的变量映射到图形属性,映射控制了两者之间关系。

设置完成后使用 myeheme

9.存储和输出

在ggplot2中,有更简单的保存方法,ggsave()能更方便保存

选项包括保存哪副图形,保存在哪里,以什么形式保存。

即将myplot保存为名为mygraph.png的5英寸*4英寸PNG格式的图片

如果忽略plot=选项,最近创建的图形会被保存。

1.数据

在ggplot2中, 所接受的数据集必须为数据框(data.frame)格式

注1:2、3步可合并为

注2:改变横纵坐标名称

注3:geom_point()中参数的用法

4.将年份映射到颜色/形状/大小属性(按年份分组)

将分组变量(因子或字符变量,可通过factor()强制性将非因子变量转为因子变量)赋值给颜色或形状或大小属性(变量赋值必须在aes里面),实现分组散点图的绘制。

①颜色

5.增加平滑曲线

geom_smooth可以增加一条线,而stat_smooth是可以添加一个置信区间范围的(利用方差值)。

①stat_smooth

ggplot函数中赋予的值是全局性质的,如果不希望全局生效,放到后面+对应的图层中去。

如:

CASE1:stat_smooth对不同颜色的点,各自拟合曲线

CASE2:stat_smooth对所有点,拟合一条曲线

更改平滑曲线为一条红色虚线

其中linetype依次为1=实线,2=虚线,3=点,4=点破折号,5=长破折号,6=双破折号

6.自定义颜色/形状

scale_color_brewer()或者scale_color_manual()函数自定义点的颜色;scale_shape_manual()函数自定义点的形状;

下面我们将分组变量year同时赋值给颜色和形状属性。

①改变颜色

7.将连续型变量(排量)映射到颜色/大小属性

①大小

8.分面facet

分面设置在ggplot2应该也是要经常用到的一项画图内容,在数据对比以及分类显示上有着极为重要的作用。

facet_wrap和facet_grid不同在于facet_wrap是基于一个因子进行设置,facets表示形式为:~ 变量

而facet_grid是基于两个因子进行设置,facets表示形式为:变量 ~ 变量(行 ~ 列),如果把一个因子用点表示,也可以达到facet_wrap的效果,也可以用加号设置成两个以上变量

例如:变量+变量~变量 的形式,表示对三个变量设置分面。

①facet_wrap

下面对参数进行说明:

· nrow,ncol : 分面所设置成的行和列,参数为数值,表示几行或者几列

· scales : 参数fixed表示固定坐标轴刻度,free表示反馈坐标轴刻度,也可以单独设置成free_x或free_y(把scales 设置成free之后,可以看出每个分面都有自己的坐标刻度,当然我们也可以单独对x轴或y轴设置)

· shrink : 也和坐标轴刻度有关,如果为TRUE(默认值)则按统计后的数据调整刻度范围,否则按统计前的数据设定坐标

· drop : 表示是否去掉没有数据的分组,默认情况下不显示,逻辑值为FALSE

CASE1:

facet_wrap()是关键,facet与wrap两个词组合,就是逐面地包起来。里面我们选择按照year这个变量来分层,就可以将1999与2008分开。一定要注意!这里在year前面有个~,回归中的用法。而最后的ncol = 1代表着我们的小窗口是1列,指定了1列之后,默认就是两行(因为年份一共只有两种)。

colour = class。class也是数据集中的一个变量,代表不同种类的汽车,而因为汽车的种类非常多,所以颜色也就变的很多。

CASE2:

如果不加ncol=1,会默认横着排列

CASE3:

下面对参数进行说明:

· scales 、shrink、drop 同上

· as.table :和小图排列顺序有关的选项。如果为TRUE(默认)则按表格方式排列,即最大值(指分组level值)排在表格最后即右下角,否则排在左上角

· margins :通过TRUE或者FALSE表示否设置而一个总和的分面变量,默认情况为FALSE,即不设置

· space :表示分面空间是否可以按数据进行缩放,参数和scales一样

CASE1:

一行多列

CASE2:

一列多行

9.其他调整

①更改透明度alpha

当数据量非常大时,会导致数据重叠点非常严重,可通过使用半透明的点避免。alpha参数控制点的透明度。从0(完全透明)到1(不透明)。

CASE2:转换为极坐标系coord_polar()

CASE2:使用ggtitle,并居中hjust

hjust 其实就是左右移动的意思,0.5

CASE3:使用labs

等价形式

1.一般形式

2.内置的统计变换

geom_histogram()默认使用stat_bin(按照区间统计频数)这个统计变换, 而这个统计变换会生成(1)count:每个组里观测值的数目, (2)density:每个组里观测值的密度和(3)x:组的中心位置这三个变量

①调整分箱(bin),即直方图的宽度binwidth

3.调整每个年份对应一个直方图facet_wrap

CASE1:

CASE2:

注:这里的year如果改成factor(year),会报错

4.元素位置的调整

元素位置的调整共有5种包括了(1)dodge:并排方式(2)fill:堆叠图像元素, 并将高度标准化为1,(3)identity:不做任何调整(4)jitter:给点增加扰动避免重合和(5)stack:堆叠图像元素。

①fill=factor(year)

fill=factor(year)表示按年进行填充颜色。为什么不用前面说到的colour = ?这是ggplot绘图中,对于线与点这种面积为0的结构,它的颜色就直接使用colour =进行指定,而对条形和密度区域,例如条形图,柱状图,扇形图(特殊的柱状图),箱线图等等有面积的图形,其面积的颜色,我们需要用fill =来指定。

R 有几种用于制作图形的系统,但 ggplot2 是最优雅和最通用的系统之一。与大多数其他图形包不同,ggplot2 具有基于图形语法的底层语法,它允许您通过组合独立组件来组合图形。如果想要更加了解ggplot2,请阅读 ggplot2: Elegant Graphics for Data Analysis ,可以从 https://ggplot2-book.org/getting-started.html 学习本书

所有的图都由数据data,想要可视化的信息,映射mapping(即数据变量如何映射到美学属性的描述)组成

1. 图层(layers) 是几何元素和统计变换的集合。几何对象,简称 geoms ,代表你在图中实际看到的东西:点、线、多边形等等。 统计转换,简称 stats ,总结数据:例如,装箱和计数观察,以创建一个直方图,或拟合一个线性模型。

2. Scales 将数据空间中的值映射到美学空间中的值。这包括颜色、形状和大小的使用。Scale还绘制图例和轴,这使得从图中读取原始数据值成为可能(反向映射)。

3. 坐标(coords) 或坐标系统描述如何将数据坐标映射到图形的平面。它还提供了轴和网格线来帮助读取图形。我们通常使用笛卡尔坐标系,但也可以使用其他一些坐标系,包括极坐标和地图投影。

4. 刻面(facet) 指定如何拆分数据子集并将其显示为小倍数。这也被称为条件反射或网格/格子。

5. theme 控制更精细的显示点,如字体大小和背景颜色。

ggplot2有许多参数,可根据需求自行选取,具体参数详情可见 https://ggplot2.tidyverse.org/reference/index.html

基础绘图:由 ggplot(data,aes(x,y))+geom_ 开始,至少包含这三个组件,可以通过"+"不断的添加layers, scales, coords和facets。

Geoms :几何对象,通常,您将使用geom_函数创建层,以下为常用的图形:

geom_bar() :直方图,条形图

geom_boxplot() :box图

geom_density() :平滑密度估计曲线

geom_dotplot() :点图

geom_point() :点图

geom_violin() :小提琴图

aes(),颜色、大小、形状和其他审美属性

要向绘图添加其他变量,我们可以使用其他美学,如颜色、形状和大小。

按照属性定义

它们的工作方式与 x 和 y 相同,aes():

aes(displ, hwy, colour = class) #按照某个属性着色

aes(displ, hwy, shape = drv) #按照某个属性定义

aes(displ, hwy, size = cyl) #按照某个属性定义

整体自定义

geom_xxx(colour =自定义颜色)

geom_xxx(shape=形状编号)

geom_xxx(size =编号大小定义 0-10)

注意根据需求按照aes()还是geom进行添加属性

以下为R语言中各shape形状编号

scale控制如何将数据值转换为视觉属性的细节。

labs()和lims() 是对标签和限制进行最常见调整。

labs() ,主要对图形进行调整,注释等

labs()括号内参数:title主标题,subtitle副标题,caption右下角描述,tag左上角

xlab() ,x轴命名

ylab() ,y轴命名

ggtitle() ,标题

lims()

xlim() , xlim(a,b) 限制坐标(a,b)

ylim() , ylim(a,b) 限制坐标(a,b)

scale_alpha() 透明度尺度

scale_shape() , 搭配aes(shape=某个属性)使用

参数:name ,solid =T/F是否填充

scale_size()搭配aes(size=某个属性)使用

参数:name,range =c(0, 10)

1.适用于发散和定性的数据

a. scale_colour_brewer() ,scale_colour_brewer(palette =" "),scale_colour_brewer(palette ="Green ")

palette来自RcolorBrewer包,所有面板:

b. scale_colour_manual()

scale_colour_manual(values=c( )) 可以 自定义颜色 ,常用的参数

values可直接定义颜色,但是建议使用命名向量,例如

values=c("8" = "red", "4" = "blue", "6" = "darkgreen", "10" = "orange")

PS:注意在aes(colour=factor()),一定要把因素转换为factor型,否则无效

2.适用于连续的值,渐变颜色

a. scale_colour_gradient()

scale_colour_gradient (low =" ",high=" "),根据值大小定义颜色,创建两个颜色梯度(低-高),

b. scale_colour_gradient2()

scale_colour_gradient2(low = " ",mid = " ",high = " ")创建一个发散的颜色梯度(低-中-高)

c. scale_colour_gradientn()

创建一个n色渐变,scale_colour_gradientn(colours =许多R语言中的颜色面板),

默认坐标系是笛卡尔 coord_cartesian()

一般不会修改

facet_grid() ,在网格中布置面板

facet_grid(rows = vars() ) cols或rows = vars(因素),图形按列或行分割

facet_wrap()

facet_wrap(vars( ), ncol =n) , ncol或者nrow,分为多少行多少列

theme_bw() ,可以覆盖所有主题,背景变为白色,我们在文章中所用的图片大都需要该背景。

或者用 theme_classic() ,同时去除了网格线

theme() ,修改主题的组件,里面涉及多个参数,根据需求调整

常见参数:

legend.position,图例的位置,包括 "left" 左, "right" 右, "bottom" 下, "top" 上和"none",不显示


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11926820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存