ggplot函数(2.ggplot绘图命令解析)
本文目录
- 2.ggplot绘图命令解析
- ggplot2超详细讲解
- 万丈高楼平地起——ggplot2简单介绍
- 1.ggplot2——简介
- R语言之ggplot
- 如何使用ggplot2
- 【R语言】--- ggplot2绘制折线图
- 如何使用 ggplot2
- R语言可视化及作图10--ggplot2的theme函数
2.ggplot绘图命令解析
【上一篇:1.R中的mpg数据框】 【下一篇:3.关于分面】 ggplot()创建了一个coordinate system。ggplot()的第一个参数是要在图中使用的dataset,所以ggplot(data = mpg)会创建一个空的图。ggplot2从data参数中寻找要匹配的variable。 geom_point()函数向ggplot()中添加了一层散点。ggplot2包中附带了很多geom(几何)函数,每个函数都为图添加不同类型的layer(层)。 每个geom函数的mapping参数定义了dataset中的variables是如何mapping(映射)到visual properties(视觉性)上的。mapping参数与aes()配对,x,y指定哪个variable映射到x和y轴。 总结下来,ggplot绘图就是数据集+几何函数+映射。 Aesthetic mappings,美学映射。aesthetic(美学)是图中objects(目标)的visual property(视觉特性),包括大小、形状、颜色等。aesthetic properties(美学特征)用level来表示。比如图中的一个点(由x和y决定)叫做object,点的大小、形状、颜色等叫做object的aesthetics,点的大小有很多level,比如2,4,6等等,点的形状也有很多level,比如圆形、三角形、正方形,当然颜色的level可以是红色、黄色等。 在aes()中将dataset中的variable的name和aesthetic的name关联起来,比如说color=class中color是aesthetic的name,calss是dataset中variable的name。ggplot2自动为每个variable的value分配一个aesthetic的level,也就是说不同的汽车类型(value)会用不同的颜色(level)表示,而具体哪个颜色会被分配给某种汽车类型是随机的。legend(图例)会指示value和level的对应关系。 需要注意的点: 1. 某些aesthetic本身是ordered,如果variable是非ordered,则会出现警告信息。mpg数据框中有些variables是分类的(离散的,manufacturer/model/year/cyl/trans/drv/fl/class),有些是连续的(displ/cty/hwy)。(PS:连续型变量的定义是其取值不能一一列举出来,比如说人的身高、体重等。) 2. ggplot2一次只能使用6个形状,第7个以后的group就不会画了。 3. aes()中是dataset中variable与aesthetic的映射关系,legend就是用来解释variable的value(值)和aesthetic的level的这种关系的。 4. aes()中的x和y不会出现在legend中,但ggplot2会创建带有tick makrs(刻度标记)和labels(标签)的axis line(坐标轴),作用就相当于legend了,解释的是locations(位置)和values(值)的关系。 aes()中的映射传递的是variable的信息,在aes()之外也可以设置美学映射,用来手动整体改变图形的外观。如下: aes()之外的aesthetics的level可以设置为:颜色的名字(比如blue/red等),大小(数字,以mm为单位),形状(用数字表示的25中R种内置的形状,如下:)等美学属性。 PS:美学属性可以通过vignette("ggplot2-specs")命令查看。 图中0,15,22相似,这是color(颜色)和fill(填充)的互动。hollow shapes(空心形状)(0-14)的边界由color决定,soild shapes(15-20)用color填充,filled shapes(21-24)有color的边界和fill的颜色,美学属性中的stroke可以和shape一起用,stroke决定的是边界的宽度。 最后,需要回答的问题: 问题1:color、size、shape这些美学属性在分类变量和连续变量上的表现有何不同呢?(color和shape应该接受分类变量,size应该接受连续变量。) 问题2:将相同变量映射到不同美学属性时会发生什么?(效果叠加?) 问题3: 执行以下命令,设置美学属性为除variables之外的值: 【上一篇:1.R中的mpg数据框】 【下一篇:3.关于分面】
ggplot2超详细讲解
"一张统计图形就是从数据到几何对象(geometric object, 缩写为geom, 包括点、线、条形等)的图形属性(aesthetic attributes, 缩写为aes, 包括颜色、形状、大小等)的一个映射。此外, 图形中还可能包含数据的统计变换(statistical transformation, 缩写为stats), 最后绘制在某个特定的坐标系(coordinate system, 缩写为coord)中, 而分面(facet, 指将绘图窗口划分为若干个子窗口)则可以用来生成数据中不同子集的图形。" 源自ggplot2的作者。 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 =来指定。
万丈高楼平地起——ggplot2简单介绍
ggplot2 最主要的优点在于它采取图层设计的方式进行绘图,简单来说ggplot2的绘图是通过图层之间的叠加实现的,而这个叠加就是通过 + 实现的,这在很大程度上有利于结构化思维绘图。一般来说ggplot2绘图的基本语法结构如下所示
其中,前两个元素对于ggplot2绘图来说是必须的,不然不会出现图形元素,后面5个为可选元素,主要用于图形的美化和个性化要求的实现。
geom_xxx()为几何对象函数,stat_xxx()为统计变换函数,我们一般使用几何对象函数,只有当我们在绘图时涉及到统计变换才会用到stat_xxx()函数,比如我们要绘制带有误差线的均值散点图。geom_xxx()函数太多了,这里先不一一列举了,后面实战时慢慢带入吧! stat_xxx()函数主要是在数据被绘制出来之前对其进行统计计算,不同的计算方法会产生不同的计算结果,所以stat()函数必定是与geom()函数存在一个对应的关系,不然你统计变换又有什么意义呢?每一个图层基本上都包含一个几何对象和一个统计变换,也就是说:每一个以geom_xxx()开头的几何对象都含有一个stat参数,同时,每一个以stat_xxx()开头的几何对象也都会有一个geom参数。实际上,geom_xxx()的参数里面会有一个默认的选项:stat = ’identity’,就是默认不进行统计变换。
用于控制变量映射到视觉对象的具体细节,比如坐标轴、透明度、轮廓色、填充色、形状等信息。具体我们会在后面的实战中接续说明。
在生物学绘图当中,常用的坐标系包括直角坐标系,也称作笛卡儿坐标系,以及极坐标系。其中ggplot2的直角坐标系包括coord_cartesian()、coord_fixed()、coord_flip()以及coord_trans(),默认为第一个,coord_fixed()能够让我们固定纵横比(华夫饼图和复合型散点饼图),coord_flip()能够翻转坐标系,coord_trans()坐标系的坐标轴上刻度比例尺是变化的,例如数据点在某个轴方向上是变化的,不便于观察,这个时候就可以通过改变比例尺来进行调节,使数据点集中显示,更加方便观察。 同时,ggplot2能够通过coord_polar()将直角坐标系转换为极坐标系,具体语句为:
theta表示要极坐标化的中心轴,即将X轴转换为圆周;direction表示排列方向,1表示顺时针。
在主题方面,一般会选择套用现成的模板,比如ggsci就是专门为学术图表开发的。ggplot2自带的主题也很多,包括theme_gray()、theme_bw()、theme_light()、theme_test()以及theme_classic(),学术图表一般推荐theme_test()和theme_classic()。
还有很多参数,只能在实战中慢慢带入咯~
1.ggplot2——简介
ggplot2 是一个用来绘制统计图形或数据图形的 R 包。与大多数其他图形软件包不同,ggplot2 具有基于图形语法的底层语法构建,它允许您通过组合不同的组件来组合图形。这使得 ggplot2 作图功能非常的强大。您可以针对您的特定问题而绘制想要展现的图形,而不仅仅局限于一组预定义的图形。
ggplot2 提供了漂亮、轻松的绘图,可以处理繁琐的细节,例如绘制图例。事实上,其精心选择的默认设置意味着您可以在几秒钟内制作出出版质量的图形。但是,如果您确实有特殊的格式要求,ggplot2 的综合主题系统可以让您轻松完成所需的工作。最终,这意味着与其花时间让图表看起来漂亮,不如专注于创建最能揭示数据中信息的图表。
学习语法不仅可以帮助您创建熟悉的图形,还可以启发你创作出更佳的方案。没有语法,就没有基础理论,因此大多数图形包是各种情况的组合。例如,在R的基础包中,如果您设计一个新图形,它由原始绘图元素(如线和点)组成,因此很难设计与现有绘图相结合的新组件。在 ggplot2 中,用于创建新图形的表达式由更高级别的元素组成,例如原始数据和统计转换的表示,可以轻松地与新数据集和其他绘图组合。
Wilkinson创建了图形语法来描述构成所有统计图形基础的基本特征。该语法回答了“什么是统计图形”这一问题。ggplot22建立在威尔金森语法的基础上,专注于层的首要地位,并将其用于R中。简而言之,语法告诉我们,图形将数据映射到几何对象(geom 点、线、条)的图形属性(aes 颜色、形状、大小)。plot也可能包括关于plot坐标系统的数据和信息的统计转换。分面(facet )可用于绘制数据的不同子集。这些独立组件的组合构成了一个图形。
所有绘图均由 数据 、可视化的信息和 映射 (数据变量如何映射到图形属性的描述)组成。有五个映射组件:
同样重要的是要注意语法不做的事情:
在使用之前,请安装好以下软件:
如果你想更加深入的了解 ggplot2 语法的元素以及它们如何组合在一起,可以参阅以下文档。
***隐藏网址***
***隐藏网址***
***隐藏网址***
参考文献***隐藏网址***
R语言之ggplot
ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离。按图层作图,保有命令式作图的调整函数,使其更具灵活性,并将常见的统计变换融入到了绘图中。 ggplot的绘图有以下几个特点:第一,有明确的起始(以ggplot函数开始)与终止(一句语句一幅图);其二,图层之间的叠加是靠“+”号实现的,越后面其图层越高。 ggplot2里的所有函数可以分为以下几类: 一个图形对象就是一个包含数据,映射,图层,标度,坐标和分面的列表,外加组件options ggplot(数据, 映射) geom_xxx(映射, 数据) stat_xxx(映射, 数据) 点(point, text):往往只有x、y指定位置,有shape但没有fill 线(line,vline,abline,hline,stat_function等):一般是基于函数来处理位置 射(segment):特征是指定位置有xend和yend,表示射线方向 面(tile, rect):这类一般有xmax,xmin,ymax,ymin指定位置 棒(boxplot,bin,bar,histogram):往往是二维或一维变量,具有width属性 带(ribbon,smooth):透明是特征是透明的fill 补:包括rug图,误差棒(errorbar,errorbarh) 然后,就是按照你的需要一步步加图层了(使用“+”)。
如何使用ggplot2
ggplot2基于Leland Wilkinson在Grammar of Graphics(图形的语法)中提出的理论,取首字母缩写再加上plot,于是得名ggplot。按照《图形的语法》一书中的观点,一张统计图形就是从数据到点、线或方块等几何对象的颜色、形状或大小等图形属性的一个映射,其中还可能包含对数据进行统计变换(如求均值或方差),最后将这个映射绘制在一定的坐标系中就得到了我们需要的图形。图中可能还有分面,就是生成关于数据的不同子集的图形。使用ggplot2绘图的过程就是选择合适的几何对象、图形属性和统计变换来充分暴露数据中所含有的信息的过程。ggplot2需要一定的时间去入门学习,但是当你掌握了ggplot2中图形的语法的时候,我相信你会感受到这套语法的优雅。
【R语言】--- ggplot2绘制折线图
折线图一般用于描述一维变量随着某一连续变量(通常为时间)变化的情况。即折线图最适合描述时间序列数据的变化情况。也可随着有序离散变量变化。本文介绍ggplot2包的geom_line()函数绘制折线图。绘制方法是首先调用ggplot()函数选定数据集,并在aes参数中指明横轴纵轴。然后调用条形图函数geom_line()函数绘制出基本折线图。 ***隐藏网址*** Robert I. Kabacoff (著). R语言实战(高涛/肖楠/陈钢 译). 北京: 人民邮电出版社.
如何使用 ggplot2
总结来说有以下几点:ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离ggplot2是按图层作图ggplot2保有命令式作图的调整函数,使其更具灵活性ggplot2将常见的统计变换融入到了绘图中。==================================================================1、ggplot2的逻辑。ggplot2的逻辑在我看来其实是真正实现了一个图层叠加的概念:一句语句代表一张图,然后再有最小的单元图层。这个与其他命令式的绘图完全不同,来做个比较:#这是基于graphic包里例子x 《- rnorm(100,14,5)y 《- x + rnorm(100,0,1)plot(x,y)text(13,20, expression(x))输出的图是这样的:我们可以看到这种绘图方式实际上是按命令添加的,以plot开始,可以以任何方式结束,每加上一个元素,实际上都是以一句单独的命令来实现的。这样做的缺点就是,其实不符合人对于画图的一般认识。其次,就是,我们没有一个停止绘图的标志,这使得有时候再处理的时候就会产生一些困惑。优势其实也有,在做参数修改的时候,我们往往可以很方便地直接用一句单独的命令修改,譬如对于x轴的调整,觉得不满意就可以写命令直接调整。而ggplot2则意味着要重新作图。再来看ggplot2的代码:x 《- rnorm(100,14,5) y 《- x + rnorm(100,0,1) ggplot(data= NULL, aes(x = x, y = y)) + #开始绘图 geom_point(color = "darkred") + #添加点 annotate("text",x =13 , y = 20,parse = T, label = "x") #添加注释画出的结果如下:我们可以发现,ggplot的绘图有以下几个特点:第一,有明确的起始(以ggplot函数开始)与终止(一句语句一幅图);其二,图层之间的叠加是靠“+”号实现的,越后面其图层越高。其次就是对于分组数据的处理,其实这方面,lattice已经做得很好了,不过我会在后面更仔细地叙述ggplot2是怎么看分组数据的绘图的。2. ggplot2的要素我们这里不谈qplot(quickly plotting)方法,单纯谈ggplot方法。不谈底层的实现思想,我们简单地理解,ggplot图的元素可以主要可以概括如下:最大的是plot(指整张图,包括background和title),其次是axis(包括stick,text,title和stick)、legend(包括backgroud、text、title)、facet这是第二层次,其中facet可以分为外部strip部分(包括backgroud和text)和内部panel部分(包括backgroud、boder和网格线grid,其中粗的叫grid.major,细的叫grid.minor)。大致见下图,这部分内容的熟悉程度直接影响到对于theme的掌握,因此希望大家留心。3. ggplot2图层以及其他函数的分类好了,现在把这些理念的东西讲完了之后,下面来理解ggplot2里的绘图命令。ggplot2里的所有函数可以分为以下几类:用于运算(我们在此不讲,如fortify_,mean_等)初始化、展示绘图等命令(ggplot,plot,print等)按变量组图(facet_等)真正的绘图命令(stat_,geom_,annotate),这三类就是实现一个函数一个图层的核心函数。微调图型:严格意义上说,这一类函数不是再实现图层,而是在做局部调整。scale_:直译为标尺,这就是与aes内的各种美学(shape、color、fill、alpha)调整有关的函数。guides:调整所有的text。coord_:调整坐标。theme:调整不与数据有关的图的元素的函数。4. 绘图第一步:初始化。ggplot2风格的绘图的第一步就是初始化,说白了就是载入数据空间、选择数据以及选择默认aes。p 《- ggplot(data = , aes(x = , y = ))data就是载入你要画的数据所在的数据框,指定为你的绘图环境,载入之后,就可以免去写大量的$来提取data.frame之中的向量。当然,如果你的数据都是向量,也可不指定,但是要在申明中标注data = NULL,不然就会得到不必要的报错。第二个是重头戏,即aes,是美学(aesthetic)的缩写。这是在ggplot2初学者眼里最不能理解的东西,甚至很多老手也会在犹豫,什么时候要把参数写在aes里,什么时候要写在aes外。我们做一个简单的,不非常恰当的解释:任何与数据向量顺序相关,需要逐个指定的参数都必须写在aes里。这之后我们会进一步解释,现在我们初始化的时候,最好只是把关于位置的x和y指定一下就好。第二部,绘制图层。很多人在解释ggplot2的时候喜欢说,ggplot2绘图有两种函数,一类是geom_,绘图用的;一类是stat_,统计变换用的。这样说不是不对,只是很不恰当,很多人就会问出一些问题,比如,统计变换竟然是做运算用的,为什么可以用来画图?为什么stat_bin和geom_histgram画出来的图是一样,竟然一样,为什么要重复?事实上,任何一个ggplot2图层都包括stat和geom俩部分,或者说两个步骤(其实还包括position)。 而stat_identity则表示不做任何的统计变换。
R语言可视化及作图10--ggplot2的theme函数
R语言绘图系列: theme函数主要的用途是调节图的主题。如下图,主题主要分为整幅图 plot ,坐标轴 axis ,图例 legend ,面板 panel 和分面元素 facet 。其中经常用到的是坐标轴主题的修改,比如常见的坐标轴字体大小的修改。 ggplot2的预设主题已经写过了,参考 R语言可视化及作图9--主题函数 。 以theme_linedraw()为例,查看这个主题设置了什么参数 它无非是一个具有两个参数的函数:base_size和base_family。其主题部分直接应用的theme函数就是前面写的主题设置函数,这一部分可以直接使用前面介绍的参数进行修改。
更多文章:
阿里云企业邮箱入口(免费的企业邮箱从哪里申请注册谁有免费和付费的公司邮箱对比说明啊)
2024年8月31日 21:16
怎么把word文档转换为pdf?word转换成pdf转换器在线免费的
2024年6月13日 19:10
qq空间权限破解器(QQ空间主人设置了权限,您可通过以下方式访问,有什么方法破解呢)
2024年8月20日 19:55
win10开机强制进入高级选项(怎么进入win10高级启动选项)
2024年9月9日 11:55
昵图网免费图片大全 图库 背景墙(如何免费下载昵图网的psd素材)
2024年9月10日 06:50
美国vs威尔士比分(##美国1-1威尔士 小维阿破门贝尔救主)
2024年8月30日 02:10