ggplot2图形系统的核心理念是把绘图与数据分离,把数据相关的绘图与数据无关的绘图分离,按图层做图。ggplot2能够把绘图拆分红多个图层,且可以按照顺序建立多重图形。html
使用ggplot2包建立图形时,每一个图形都是由函数ggplot()建立的,提供绘图的数据和映射:app
由几何对象来控制绘制的几何图形,经过符号“+”来增长图形的元素,这使得绘制图形的过程结构化,同时使绘图更具灵活性。ide
在ggplot2中, 图形语法中至少包括了以下几个图形部件,每个部件能够是一个图层:函数
这些组件之间是经过“+”, 以图层(layer)的方式来粘合构图的,能够这样理解ggplot2中的图层:每一个图层能够表明一个图形组件, 这些图形组件以图层的方式叠加在一块儿构成一个绘图的总体,在每一个图层中的图形组件又能够分别设定数据、映射或其余相关参数,所以组件之间又是具备相对独立性的。字体
在开始正文以前,推荐你们阅读《ggplot2入门与进阶(上)》,这篇文章写的很是好。spa
使用函数ggplot()初始化图形对象,并指定绘制图形的数据集和坐标轴的映射,在ggplot()函数中,指定数据集的默认设置,便于后续图形选项的操做:debug
ggplot(data = NULL, mapping = aes())
两个重要参数:code
在ggplot中设置的映射是默认映射关系,其余图层中能够继承该映射关系,或修改映射关系。component
1,数据htm
在ggplot2中, 所接受的数据集必须为数据框(data.frame)格式,在下面的小节中,使用数据集mtcars做为ggplot的输入:
library(ggplot2)
data("mtcars")
2,映射
映射是指为数据集中的数据关联到相应的图形属性过程当中一种对应关系,ggplot2经过aes()函数来指定映射,把图形属性和数据关联起来。
aes是英语单词 aesthetics 的缩写,中文意思是美学,aes用于指定图形属性。
aes(x, y, ...)
aes()函数中常见的映射选项是:
注意,映射和设定是不一样的:
p <- ggplot(mtcars, aes(wt, mpg)) p + geom_point(color = "blue") #设定散点的颜色为蓝色 p + geom_point(aes( color = "blue"))
最后一行语句为错误的映射关系, 在aes中, color = “blue”的实际意思是把”blue”当为一个变量, 用这个变量里的数据去关联图形属性中的参数, 由于”blue”只含有一个字符变量, 默认状况下为离散变量, 按默认的颜色标度标记为桃红色。
3,分组
分组(group)是ggplot2中映射关系的一种,默认状况下ggplot2把全部观测点分为了一组,若是须要把观测点按指定的因子进行分组处理,必须修改默认的分组设置。
ggplot(data = mtcars, mapping = aes(x = wt, y = hp, group = factor(gear))) + geom_line()
分组也能够经过映射把视觉特征(shape、color、fill、size和linetype等)设置为变量来实现分组,分组一般使用因子来实现,这就要求在数据集中存在因子变量,用于对数据分类,实现图形的分组。
ggplot(data=ds,aes(x=var1,y=var2,fill=var3,shape=var4))+ geom_point()
几何对象控制图层的渲染和生成的图像类型,例如,geom_point()会生成散点图,而geom_line会生成折线图。统计变换是对数据进行统计,一般以某种方式对数据信息进行汇总, 例如经过stat_smooth()添加光滑曲线。
每个几何对象都有一个默认的统计变换, 而且每个统计变换都有一个默认的几何对象。在ggplot2的官方文档中, 已对ggplot2中全部的geom和stat组件进行了汇总, 更详细的内容, 可直接点开相应图形组件所对应的连接。
函数ggplot()能够设置图形,可是没有视觉输出,须要使用一个或多个几何函数向图形中添加几何对象(geometric,简写为geom),包括点(point)、线(line)、条(bar)等,而添加几何图形的格式十分简单,经过符号“+”把几何图形添加到plot中:
ggplot()+
geom_xxx()
例如,使用geom_point()函数输出点状图形,并接收如下美学参数:alpha、colour、fill、group、shape、size和stroke,
ggplot(data=mtcars, aes(x=wt,y=mpg))+ geom_point(color="red",size=1,shape=0)
经常使用的图形参数是:
标度控制着数据到图形属性的映射,更重要的一点是标度将咱们的数据转化为视觉上能够感知的东西, 如大小、颜色、位置和形状。因此经过标度能够修改坐标轴和图例的参数。关于标度,请查看官方文档:Scales 。
最经常使用的标度是:标签、图形选项(颜色、size、形状、线形等)和坐标轴
1,标签
能够经过函数labs()来指定图形的标题(title),子标题(subtitle),坐标轴的标签(x,y)等,并能够指定标签的美学选项:
labs(...)
参数是美学(aesthetic)选项,使用name=value模式,可使用的选项是:
2,自定义图形选项
scale_colour_manual()
scale_fill_manual()
scale_size_manual()
scale_shape_manual()
scale_linetype_manual()
scale_alpha_manual()
scale_discrete_manual()
3,坐标轴
标度是区分离散和连续变量的,标度用于将连续型、离散型和日期-时间型变量映射到绘图区域,以及构造对应的坐标轴。
坐标系统肯定x和y美学如何组合以在图中定位元素。默认的坐标系是笛卡尔坐标系,coord_cartesian(),笛卡尔坐标系是最经常使用的坐标系,函数coord_flip() 用于反转笛卡尔坐标系,把x轴和y轴对调。
分组和刻面都用于对数据分组,便于观察各自的规律、趋势和模式,不一样的是,分组是把图形绘制到一个大的图形中,经过美学特征来区分,而刻面是把图形绘制到不一样的网格中。
刻面是在一个画布上分布多幅图形,这一过程须要先把数据划分为多个子集, 而后把每一个子集依次绘制到画布的不一样面板中。
ggplot2提供两种分面类型:网格型(facet_grid)和封面型(facet_wrap)。
主题(Theme)用于控制图形中的非数据元素外观,不会影响几何对象和标度等数据元素,主题主要是对标题、坐标轴标签、图例标签等文字调整, 以及网格线、背景、轴须的颜色搭配。
ggplot图形的主题(theme)元素主要分为5大类:图形(plot)、面板(panel)、坐标轴(axis)、图例(Legend)和带形(Strip),经过theme()函数来统一控制图形的美学和文本特征,能够用于调整字体,背景色,前景色和网格线等。
对于面板的网格线,分为主线(panel.grid.major)和 次线(panel.grid.minor ),用户能够根据绘制图形的须要,显示或隐藏。
关于主题的详细用法,请查看官方文档:Modify components of a theme 和 Theme elements。
Theme()中每个参数的赋值,能够经过元素函数来实现,margin()
函数用于指定元素的边界,element_xxx用于控制矩形,线条和文本的填充(fill)、颜色,size、形状等
margin(t = 0, r = 0, b = 0, l = 0, unit = "pt")
element_blank()
element_rect(fill = NULL, colour = NULL, size = NULL, linetype = NULL, color = NULL, inherit.blank = FALSE) element_line(colour = NULL, size = NULL, linetype = NULL, lineend = NULL, color = NULL, arrow = NULL, inherit.blank = FALSE) element_text(family = NULL, face = NULL, colour = NULL, size = NULL, hjust = NULL, vjust = NULL, angle = NULL, lineheight = NULL, color = NULL, margin = NULL, debug = NULL, inherit.blank = FALSE)
参考文档: