第十章 可视化
10.1 三种绘图系统
base 图形是最古老的系统,在 R 的存在初期它就已经存在了。base 图形很容易上手,不过它们需要大量的修改甚至一些魔 法咒语才能变得更完美,而且它很难扩展到新的图表类型中。
第二个图形系统 lattice 建立在grid系统之上,它为所有常见的图表类型提供了高级函数。grid 允许你在绘图时涉及系统底层,可以具体指定在哪里画每个点、线或矩形。但当我们想画散点图时,没有人想每次都花大量的时间写几百行代码来实现。
第三个图形系统是 ggplot2 系统。
10.2 三种方式绘制散点图
10.2.1第一种方法:base绘图法
base 中用于绘制散点图的函数就是简单的 plot。由于plot 出现得早 ,所以我们必须把它包括在 with 的函数调用中来访问列
with(数据框, plot(x轴数据, y轴数据))
10.2.2第二种方法:lattice图形系统
lattice 版本的 plot 是 xyplot。它使用了一个公式接口来指定 x 和 y 坐标变量。公式接口使按区域拆分数据变得很容易。我们只需要:追加一个 | 号(这是一个“管 道”字符;与用于逻辑的“或”相同)和我们希望拆分的变量
xyplot(和其他 lattice 函数)还需要一个 data 参数,此参数将告诉它从哪个数据框中寻找变量。
library(lattice) xyplot( y轴数据~ x轴数据, 数据框)
10.2.3第三种方法:ggplot2图形系统
ggplot2 本质上是“语法的” ,这意味着它由众多小的组件构成,因此它更容易创建全新的绘图类型
10.3绘制基础图形
图形 | 参数 |
---|---|
hist(直方图) | x 数值向量 breaks 分段区间,取值一个向量(各区间端点)或者一个数字(拆分为多少段),或者一个字符串(计算划分区间的算法名称),或者一个函数(划分区间个数的方法) freq 是否以频数作图,默认TRUE,画出频数直方图,取值FALSE时画频率直方图 |
barplot(条形图) | height 数值,数据结构必须是向量或者矩阵 beside 默认值为FALSE,每一列都将给出堆砌的“子条”高度,若 beside=TRUE,则每一列都表示一个分组并列 horiz 逻辑值,默认为FALSE,改成TRUE图形变为横向条形图 |
pie(饼图) | x 非负的数值向量,x中的值表示饼图切片的区域 labels 标签,一个或多个给切片命名的表达式或者字符串 radius 半径,取值从-1到1,其中数字表示饼图的半径大小,负数表示从180°开始绘制饼图,正数表示从0°开始绘制饼图 |
fan.plot(扇形图) | X 非负数值向量,表示每个扇形的面积 labels 各扇形标签的字符型向量 |
boxplot(箱线图) | x 数值向量,依次作出箱线图 formula 公式,形式如y ~ grp,其中y是数据集中的数值型向量并且根据grp来划分y的类别,grp通常是因子型数据 data 提供formula数据的数据框 range 一个延伸倍数,箱线图延伸到离箱子两端range *IQR,超过这个范围的数据点就被视作离群点,在图中直接以点的形式表示出来 width 箱子的宽度 varwidth 箱子的宽度与样本量的平方根是否成比例,默认FALSE,不成比例,若为TRUE则成比例 notch 设置图形是否带刻槽,默认为FALSE,如果改为TRUE则绘制矩阵样本x的带刻槽的凹盒图 horizontal 改变图形的方向,默认为FALSE,垂直画图;TURE为水平画图 add 是否将箱线图添加到现有图形上,默认为FALSE |
plot(根据作图对象而异,最简单的是散点图) | x,y 接收类似向量类型的一维数据。表示x轴和y轴对应的数据。无默认。 |
pairs(散点图矩阵) | x 数值型的矩阵或者数据框,作为散点的坐标。逻辑型和因子型会自动转换为数值型数据 formula 公式,形式如~ x + y + z,其中x、y、z是数据框的列名,作为散点矩阵图的坐标,其对应的列必须是数值型数据, data 提供formula数据的数据框 labels 变量的名称 panel 面板数据的展示方式,默认为points(散点) subset 一个可选的向量,指定用于绘制图形的数据子集 na.action 对缺失值的处理方式,默认为跳过缺失值 |
corrgram(相关图) | x 每行作为一个观测值的数据框或者相关系数矩阵 order 变量排序,默认FALSE,相关矩阵按数据框名对变量排序,当order为TRUE时,相关矩阵将使用主成分分析法对变量重排序,这将使得二元变量的关系模式更为明显 lower.panel 主对角线下方的元素类型,取值panel.pie,用饼图的填充比例来表示相关性大小,panel.shade用阴影的深度来表示相关性大小,panel.ellipse 绘制置信椭圆和平滑拟合曲线,panel.pts绘制散点图,panel.conf绘制置信区间,panel.cor绘制相关系数 upper.panel 主对角线上方的元素类型,取值同上 text.panel 取值panel.txt输出的变量名字 diag.panel 控制着主对角线元素类型panel.minmax输出变量的最大最小值 |
sm.density.compare(核密度图) | x 数值向量 Group 分组向量,是因子型数据 |
stars(星状图) | x 一个多维数据矩阵或数据框,每一行数据将生成一个星形 full 逻辑值,决定了是否使用整圆(或半圆),默认为TRUE scale 是否将数据标准化到区间[0, 1]内,默认为TRUE radius 是否画出半径,默认为TRUE labels 每个个体的名称,默认为数据的行名 locations 以一个两列的矩形给出每个星形的放置位置,默认放在一个规则的矩形网格上,若提供给该参数一个长度为2的向量,那么所有的星形都将被放在该坐标上,从而形成蛛网图或雷达图 flip.labels 每个星形底部的名称是否互相上下错位,以免名称太长导致文本之间互相重叠 draw.segments 是否作线段图,即:每个变量以一个扇形表示,默认FALSE col.segments 每个扇形区域的颜色(当draw.segments为FALSE时无效) col.stars 设定每个星形的颜色(当draw.segments为时无效) frame.plot 是否画整个图形的边框 |
contour(等高图) | x、y 数值向量,组合成网格 z 数值向量,网格上的高度数值 levels 一系列等高线的z值,只有这些值或者这些值附近的点才会被连起来 labels 等高线上的标记字符串,默认是高度的数值 method 设定等高线的画法,有三种取值:‘simple’(在等高线的末端加标签、标签与等高线重叠),‘edge’(在等高线的末端加标签、标签嵌在等高线内),‘flattest’(在等高线最平缓的地方加标签、嵌在等高线内) |
10.4修改图形参数
通过par()修改图形参数
调用格式:
par(optionname=value,optionname=name,…)
不带参数时,将生成一个含当前图形参数设置的列表
令参数no.readonly=TRUE,可以生成一个可修改的当前图形参 数列表。
以这种方式设定的参数值除非被再次修改,否则将会在会话结 束前一直有效
10.4.1颜色函数
R语言提供了自带的固定种类的颜色,主要涉及的是colors函数,该函数可以生成657中颜色名称,代表657种颜色
colors()
10.4.2修改颜色
RColorBrewer包提供了3套配色方案,分别为连续型,极端型以及离散型。
连续型(Sequential)指生成一系列连续渐变的颜色,通常用来标记连续型数值的大小。共18组颜色,每组分为9个渐变颜色展示。
函数名称 | 生成原理 | 使用格式 |
---|---|---|
rgb | RGB模型(红绿蓝混合) | rgb(red,green,blue,alpha,names=NULL,max=1) |
rainbow | 彩虹色(赤橙黄绿青蓝紫) | rainbow(n,s=1,v=1,start=0,end=max(1,n-1)/n,gamma=1) |
heat.coclor | 高温、白热化(红黄白) | 同rainbow函数 |
terrain.colors | 地理地形(绿黄棕白) | 同rainbow函数 |
topo.colors | 蓝青黄棕 | 同rainbow函数 |
cm.colors | 青白粉红 | 同rainbow函数 |
brewer.pal | RColorBrewer包提供的3套配色方案 | col=brewer.pal(n,"颜色组* ")) 颜色组*:3类配色方案的颜色组名称 |
极端型(Diverging)指生成用深色强调两端、浅色标示中部的系列颜色、可用来标记数据中的利群点。共9组颜色,每组分为11个渐变颜色展示。
离散型(Qualitative)指生成一系列彼此差异比较明显的颜色,通常用来标记分类数据。共8组颜色,每组渐变颜色数不同。
参数 | 描述 |
---|---|
col | 默认的绘图颜色 |
col.axis | 坐标轴刻度文字的颜色 |
col.lab | 坐标轴标签的颜色 |
col.main | 标题的颜色 |
col.sub | 副标题的颜色 |
fg | 图形的前景色 |
bg | 图形的背景色 |
10.4.3修改点符号和线条
10.4.3.1点样式参数
参数 | 描述 |
---|---|
pch | 点的样式,取整数0-25或字符"*","、", "."," o"," O", "0", "+", "-", "|" 等 |
cex | 点的大小,1(默认)表示不缩放,小于1表示缩放,大于1表示放大 |
col | 点边框填充的颜色 |
bg | 点内部填充的颜色,仅限21-25样式的点 |
font | 字体设置,1(默认)为正常字体,2表示粗体,3表示斜体,4表示粗斜体 |
lwd | 点边框的宽度,1(默认)表示正常宽度,小于1表示缩放,大于1表示放大 |
10.4.3.2线条样式
参数 | 描述 |
---|---|
lty | 线条样式,0表示不画线,1表示实线,2表示虚线,3表示点线。 |
lwd | 线条粗细,1(默认)表示正常宽度,小于1表示缩放,大于1表示放大 |
R语言也提供了绘制不同类别的线条的多种函数
函数 | 说明 | 使用格式 |
---|---|---|
lines | 在画布中添加曲线,可以设置的参数包括:线条样式(lty)、颜色(col)、粗细(lwd)等 | lines(x, lty = , lwd = ,...) |
abline | 在画布中添加参考线,可以设置的参数包括:直线的截距(a)、直线的斜率(b)、水平线的纵轴值(h)、垂直线的横轴值(v)等 | abline(a = NULL, b = NULL, h = NULL, v = NULL, reg = NULL, lty = , lwd = ,...) |
segments | 两点之间绘制线段,绘制对象是两端点的坐标 | segments(x0, y0, x1, y1, lty = , lwd = ,…) |
arrows | 在线段端点加上箭头,箭头与线段之间的夹角(angle)可调 | arrows(x0, y0, x1, y1, angle = , lty = , lwd = ,…) |
grid | 在绘图的基础上添加网格线,其中ny用户设置水平网格的数目,nx用于设置垂直网格的数据。equilogs是当坐标取了对数之后,是否仍使用等距的网格线 | grid(nx = NULL, ny = nx, col =, lty =, lwd =, equilogs = TRUE) |
rug | x为坐标轴须的位置;ticksize为坐标轴须的长度;side为坐标轴须的位置,默认值1为x轴,取值2时为y轴 | rug(x, ticksize =, side =, col =, lty =, lwd =, ...) |
10.4.4修改文本属性
参数 | 描述 |
---|---|
cex | 字体大小,1(默认)表示不缩放,小于1表示缩放,大于1表示放大 |
cex.axis | 坐标轴刻度文字的缩放倍数 |
cex.lab | 坐标轴标签的缩放倍数 |
cex.main | 标题的缩放倍数 |
cex.sub | 副标题的缩放倍数 |
col | 字体颜色,选项为颜色名称,整数或十六位制数 |
font | 字体样式,1(默认)为正常字体,2表示粗体,3表示斜体,4表示粗斜体 |
font.axis | 坐标轴刻度文字的字体样式 |
font.lab | 坐标轴标签的字体样式 |
font.main | 标题的字体样式 |
font.sub | 副标题的字体样式 |
ps | 字体的磅值, 文本的的最终大小为ps*cex |
family | 绘制文本使用的字体族,标准取值为serif(衬线),sans(无衬线),mono(等宽) |
函数 | 说明 | 使用格式 |
---|---|---|
title | 添加标题元素,其中main是主标题,sub是副标题,xlab是x轴标题,ylab是y轴标题,选项都是一个列表list(text, font=, col=, cex=,…)或者简单的text,text是文本内容 | title(main = NULL, sub = NULL, xlab = NULL, ylab = NULL, line = NA, outer = FALSE,...) |
text | 在图形中任意位置添加文本,其中x, y 确定标签位置,labels是文本内容 | text(x, y = NULL, labels = seq_along(x), cex = 1, col = NULL, font = NULL,...) |
mtext | 在图形的四条边上添加文本,其中text与labels一样指文字的内容,side取值为整数1~4分别把周边文本作在表示图形的下、左、上、右边。line设置一个距离图形边缘的行数 | mtext(text, side = 3, line=0, cex = NA, col = NA, font = NA, ...) |
10.4.5设置坐标轴
参数 | 描述 |
---|---|
axes | 逻辑参数,如果axes=TRUE(默认),则显示坐标轴,如果axes=FALSE,则隐藏坐标轴。 |
xaxt/yaxt | 坐标轴样式,默认值”s”,表示x /y轴以标准样式显示,取值”n”表示隐藏x /y轴 |
xaxs/yaxs | 坐标轴计算方式,默认值”r”表示把原始数据的范围向外扩大4%,作为x /y轴范围,取值”l”表示x /y轴范围为原始数据范围 |
xlim/ylim | 坐标轴范围,设置为c(from,to) , from是x /y轴的首坐标,to是尾坐标 |
xlab/ylab | 设置坐标轴标签 |
main | 标题 |
sub | 副标题 |
axis函数来创建自定义的坐标轴,可以使用title()函数为图形添加标题和坐标轴标签:
参数名称 | 参数解释 |
---|---|
side | 坐标轴所在的边,1,2,3,4分别表示下,左,上,右 |
at | 通过向量来设置坐标轴内各刻度标记的位置,at参数要与labels向量一一对应 |
labels | 一个向量字符,表示坐标轴各刻度的名称(刻度标记),labels参数要与at向量一一对应 |
font.axis | 刻度标记的字体,1(默认)为正常字体,2表示粗体,3表示斜体,4表示粗斜体。 |
cex.axis | 刻度标记的大小,1(默认)表示正常大小,小于1表示缩放,大于1表示放大 |
col.axis | 刻度标记的颜色,对应颜色名称即可 |
tick | 设置是否画出坐标轴,为TRUE(默认)时,表示画出坐标轴,为FALSE时则不画出,此时并不影响刻度标记labels的展示 |
lty | 坐标轴的样式,tick=TRUE时有效,0表示不画线,1表示实线,2表示虚线,3表示点线 |
lwd | 坐标轴的宽度,tick=TRUE时有效,1(默认)表示正常宽度,小于1表示缩放,大于1表示放大 |
col | 坐标轴的颜色。tick=TRUE时有效,令col等于对应颜色名称即可 |
col.ticks | 坐标轴刻度线的颜色,令col.ticks等于对应颜色名称即可。 注意: col.ticks是指与坐标轴垂直的小刻度线的颜色。col表示设置了除刻度标记(labels)以外的部分颜色,包括col.ticks |
pos | 坐标轴线绘制位置的坐标,与另一条坐标轴相交位置的值 |
las | 标签是否平行于坐标轴,参数为0时平行于坐标轴,为2时垂直于坐标轴 |
tck | 刻度线的长度,以相对于绘图区域大小的分数表示,负值表示在图形外侧,正值表示在图形内侧,0表示禁用刻度,1表示绘制网格线,默认值为-0.01 |
10.4.6图形尺寸与边界尺寸
控制图形尺寸和边界大小的参数
参数 | 描述 |
---|---|
pin | 以英寸表示的图形尺寸(宽和高) |
mai | 以数值向量表示的边界大小,顺序为“下、左、上、右”,单位为英寸 |
mar | 以数值向量表示的边界大小,顺序为“下、左、上、右”,单位为英分*。默认值为c(5, 4, 4, 2) + 0.1 |
10.4.7添加图例
参数名称 | 参数解释 |
---|---|
x, y | 设置图例的位置(默认左上角位置),除使用x和y参数外,也可以使用字符"bottomright", "bottom", "bottomleft", "left", "topleft", "top", "topright", "right", "center" |
legend | 一个字符向量,表示图例中的文字 |
horiz | 图例的排列方式,为FALSE(默认)时,图例垂直排列,为TRUE时,图例水平排列 |
ncol | 图例的列数目,当horiz=TRUE时,该项无意义 |
pch | 图例中点的样式,可取0-25,其中0-14为空心点,15-25为实心点;也可以直接通过pch=”+”的方式定义点的样式。 |
lty | 图例中线的样式,0表示不画线,1表示实线,2表示虚线,3表示点线 |
col | 图例中点和线的颜色,令col等于对应颜色名称即可 |
bg | 图例的背景颜色,令bg等于对应颜色名称即可。在bty参数为"n"时无效 |
bty | 设置图例框的样式,取”o”(默认)时表示显示边框,取”n”时表示无边框 |
xpd | 是否在作图区域外作图,默认FALSE,即不允许在作图区域外作图 |
title | 设定图例的标题 |
10.4.8添加次刻度线
使用Hmisc包中的minor.tick()函数
10.4.9添加参考线
abline(h=yvalues,v=xvalues)
10.4.10文本标注
text():向绘图区域内部添加文本
text(location,”text”,pos,…)
mtext():向图形的四个边界之一添加文本
mtext(“text to place”,side,line=n,..)
除了用来添加文本标注之外,text()函数也通常用来标识图形中的点
10.5绘制组合图形
par函数有丰富的在线参考信息,可以设置大多数绘图的全局参数
参数 | 描述 |
---|---|
mfrow/mfcol | 页面摆放,把一个页面平分成n份,表示行数和列数的二维向量,mfrow一行一行从左到右作图,mfcol一列一列从上到下作图 |
mai/mar | 图形边距, mai(英寸边距)和mar(行边距)。四个边距的顺序是下、左、上、右 |
mgp | 坐标轴位置,三维数值向量,依次为标题、刻度标签和刻度的位置 |
oma | 外边界宽度;类似mar,默认为c(0, 0, 0, 0) |
与par函数均分画布不同,layout函数可以不均等的分隔页面
参数名称 | 参数解释 |
---|---|
mat | 矩阵,提供了作图的顺序以及图形版面的安排,矩阵中的元素为数字1到n,数字的顺序和图形方格的顺序是一样的,相同数字的部分合并成一个绘图区 |
widths/heights | 提供了各个矩形作图区域的长和宽的比例 |
respect | 逻辑值,表示各图形内的横纵轴刻度长度的比例尺是否一样 |
10.6保存图形
如果希望将当前画布的图形保存到指定路径,可以使用win.metafile函数,bmp函数,tiff函数,svg函数,postscript函数,png函数,jpeg函数等将接下来的图形绘制到指定文件,并用dev.off函数结束关联。可以使用pdf函数将图形保存为PDF文件格式。
标签:表示,颜色,第十章,默认,坐标轴,可视化,图形,col From: https://www.cnblogs.com/simpleness/p/17626120.html