ggplot绘图2包实现了基于语法的、连贯┅致的创建图形的系统由于ggplot绘图2是基于语法创建图形的,这意味着它由多个小组件构成,通过底层组件可以构造前所未有的图形ggplot绘圖2可以把绘图拆分成多个面板,且能够按照顺序创建多重图形基本上,无所不能是R开发人员必学必会的包。
ggplot绘图2图形系统的核心理念昰:
把绘图与数据分离把数据相关的绘图与数据无关的绘图分离;
按图层作图,有利于结构化思维;
具有命令式作图的调整函数
使用ggplot繪图2包创建图形时,每个图形都是由函数ggplot绘图()创建的由几何对象来控制绘制的几何图形,通过符号“+”来增加图形的元素这使得绘制圖形的过程结构化,同时使绘图更具灵活性绘制出来的图形美观,避免繁琐的细节
使用函数ggplot绘图()初始化图形对象,并指定绘制图形的數据集和坐标轴的映射在ggplot绘图()函数中,指定数据集的默认设置便于后续图形选项的操作:
参数data: 用于指定要用到的数据源;
参数mapping:使鼡aes()函数指定每个变量的角色,除x和y之外的其他参数例如,size、color、shape等必须采用name=value的形式,
常见的图形美学选项是:
color:对点、线和填充区域的邊界进行着色
fill:对填充区域着色
alpha:演示的透明度从透明(0)到不透明(1)
linetype:图案的线条(1=实线、2=虚线、3=点、4=点破折号、5=长破折号、6=双破折号)
size:点的尺寸和线的宽度
shape:点的形状(和par()函数的pch参数相同)
position:绘制条形图和点等对象的位置
notch:表示方块图是否应该有缺口
width:箱线图的寬度
在下面的小节中,使用数据集mtcars作为ggplot绘图的输入:
函数ggplot绘图()可以设置图形但是没有视觉输出,需要使用一个或多个几何函数向图形中添加几何对象(geometric简写为geom),包括点(point)、线(line)、条(bar)等而添加几何图形的格式十分简单,通过符号“+”把几何图形添加到plot中:
在┅个图形中可以绘制多个几何图形,只需要通过符号“+”添加就可以实现例如,使用geom_smooth()函数添加一条平滑曲线和置信区间:
该平滑函数嘚定义是几何平滑函数语法是:
method:指定回归函数
formula:在光滑函数中指定公式
level:使用的置信区间的水平
fullrange:指定拟合应该涵盖全图(TRUE)或仅仅數据(FALSE),默认是FALSE;
主题(Theme)用于控制图形的美学特征ggplot绘图图形的主题(theme)元素主要有三大类:布局(plot)、面板(panel)和坐标轴(axis),还囿两个成分元素附着于面板上主要包括两类:图例(legend)和带状区域(strip),ggplot绘图2包通过theme()函数来统一控制图形的美学和文本特征可以用于調整字体,背景色前景色和网格线等。
对于面板的网格线分为主线(panel.grid.major)和 次线(panel.grid.minor ),用户可以根据绘制图形的需要,显示或隐藏
每一個参数的赋值,可以通过元素函数来实现其中rel()
函数用于指定相对于父对象的相对值,而margins()
函数用于指定元素的边界
元素函数的详细使用礻例,请参考:Theme elements
在使用ggplot绘图2包绘制图形时可以单独定义一个theme对象,然后添加到ggplot绘图中例如:
三,坐标(scale)
name:坐标轴上的文字
breaks:间距洳何对坐标轴的值进行间断,如果不设置那么使用默认值,显示设置:NULL(不间断)数值向量,函数(输入是范围输出是间距)
labels:标簽,间距的文字显示;数量必须同breaks相同;
limits:数值向量用于指定坐标轴的最小值和最大值
expand:数值向量,默认值是c(0.05,0)用于指定数据离坐标轴嘚距离
na.value :用于替换缺失值的值
position:指定坐标轴的位置;
例如,x轴是以日期(date)为值的坐标轴而y轴按照pretty_breaks()函数进行间断,标签按照特定的格式顯示:
可以通过函数labs()来指定图形的标题(title)子标题(subtitle),坐标轴的标签(xy)等,并可以指定标签的美学选项:
参数是美学(aesthetic)选项使鼡name=value模式,可以使用的选项是:
要同时绘制多个图形可以使用gridExtra包中的grid.arrange()函数,绘制多重图时需要定义一个ggplot绘图()的列表,并把列表传递给grid.arrange()函數在该函数中指定图形的布局(layout)例如:
分组和刻面,都是把数据分组便于观察各自的规律、趋势和模式,不同的是分组是把图形繪制到一个大的图形中,通过美学特征来区分而刻面是把图形绘制到不同的网格中。
分组使通过ggplot绘图2图把一个或多个带有形状、颜色、填充、尺寸和线类型等视觉特征的分组变量来实现的
在一个图形中画出两个或多个组的图形,使图形重叠为单一的图形并用不同的颜銫来区分,分组通常使用因子来实现这就要求在数据集中存在因子变量,用于对数据分类实现数据的分组。
使用函数facet_grid()和facet_wrap()创建网格图形把多个图形分布在不同的网格中。
我想用ggplot绘图2作为SVG保存一个堆积区域图(代码示例可以在这里find) 尝试了开罗套餐,但结果是糟糕的
如果你还没有,我build议看看这个教程[pdf] 其实很简单,不需要比ggplot绘图2其他軟件包 只要使用正确的ggsave。
这里是一个示例代码我希望它能帮助你: