plot()函数

plot()函数是R中最基本的绘图函数,其实最简单、最基础的函数,这也就意味着其具有更多的可操作性。

plot(x,y,...)

在plot函数中,只需指定最基本的x和y轴对应数据即可进行图像的绘制,x和y轴数据分别为两个向量或者是只有两列的数据框(第一类为x轴,第二列为y轴)

require(stats)plot(cars)

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

plot绘图默认为散点图,可以通过type参数修改绘图的类型

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

type=”s”是先水平后垂直,type=”S”是先垂直后水平,type=”n”为不显示图像。

par()函数

plot()函数中的所有绘图参数基本上都是应用par()函数中的参数进行设置,接下来就详细介绍par()函数中可以设置的绘图参数。

par(..., no.readonly = FALSE)

其中…表示所有类似于tag=value形式的参数,下面会具体的对这些参数进行描述。

当参数no.readonly=TRUE时,函数par()就只允许有这一个参数了,并且会返回当前绘图设备中各个参数的参数值

如只输入par()则会返回一个list,其中包含当前的图形参数。

各参数意义:

adj,该参数值用于设定在text、mtext、title中字符串的对齐方向,0表示左对齐,0.5(默认值)表示居中,而1表示右对齐。

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

ann,如果ann=FALSE,那么高水平绘图函数会调用函数plot.default使对坐标轴名称、整体图像名称不做任何注解,默认值为TRUE。

plot(1:4,ann=FALSE,main='plot(1:4,ann=FALSE)')

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

尽管指定了参数main的值,但是图像中仍然没有显示。

ask,逻辑值,若为TRUE(且当前的R会话是可交互状态),则在绘制新图像之前会要求用户输入确认信息。

bg,用于设定绘图区域的背景颜色

bty,该参数值为字符串型,用于限定图形的边框类型。如果bty的值为”o”(默认值)、”l”、”7”、”c”、”u”或者”]”中的任意一个,对应的边框类型就和该字母的形状相似,如果bty的值为”n”,表示无边框。

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

cex,用于表示对默认的绘图文本和符号放大多少倍

cin、cra、cxy,设置字符的大小,cin的单位为英寸,cra的单位为pixels,cxy的单位为用户坐标轴的单位。

col,用于设定默认的绘图颜色

crt,该参数的值为一个表示度数的数值,用于表示单个字符的旋转度数

family,图形中字符的字体类型。

fg,图形中显著位置的颜色(如坐标轴、刻度线,边框等),一般默认为”black“。

font,用于设定采用哪种字型,为一个整数。

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

1代表纯文本,2表示黑体,3表示斜体,4表示黑色斜体

las,只能是0,1,2,3中的某一个值,用于表示刻度值的方向

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

0表示总是平行于坐标轴,1表示总是水平方向,2表示总是垂直于坐标轴,3表示总是垂直方向

lend,定义线的末端形式,0或round为圆滑末端,1或butt末端会有一个放大的圆点,2或square为直角末端。

ljoin,定义线的连接形式,0或round为圆滑连接,1或mitre为斜切连接,2或bevel为齿轮连接。

lmitre,当线为mitred连接时,设置mitre的个数,必须超过1。

lheight,设定多行文本的行距

lab,为c(x,y,len)格式的数字向量,x和y分别定义x和y轴上刻度的个数,len定义标签的长度,默认为c(5,5,7)。

lty直线类型

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

lwd线条宽度,必须为一个整数,默认值为1。

mgp,设定标题、坐标轴名称、坐标轴距图形边框的距离,默认值为c(3,1,0),其中第一个值影响的是标题。

mkh,定义图像中symbols的大小,单位为英寸。

pch,表示点的形状

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

pin,当前的维度,形式为c(width,height),单位为英寸。

ps,整数,设置图像中点对应的文字大小

srt字符串旋转度数,只支持函数text。

tck坐标轴刻度线的长度,为一个小于等于1的小数,表示绘图区域的高度或宽度的一部分(取高度或宽度中较小的值),如果tck=1,则表示绘制网格线。默认值为NA(相当于tcl=-0.5)

xaxs、yaxs坐标轴的间隔设定方式,”r”(regular)首先会对数值范围向两端各延伸4%,然后在延伸后的数值区间中设置坐标值,”i”(internal)直接在原始的数据范围中设置坐标值。

xaxt、yaxt,用于设定坐标轴的刻度值类型,为一个字符,“n”表示不绘制刻度值及刻度线,”s”表示绘制,默认为”s”。

xlog、ylog,一个逻辑值。如果为TRUE,表示对坐标轴进行对数处理,默认值为FALSE。

绘图区域设置

​开始绘制一张图像之前,首先要做的就是定义绘图区域,以确定图像绘制的位置及各个元素的分布。

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

par()函数中除了用于绘图元素的参数之外,还有一些是针对绘图区域设置的参数。

mai,数字向量,格式为c(bottom, left, top, right),以英寸为单位定义绘图区边缘空白大小

mar,数字向量,格式为c(bottom, left, top, right),给出各个方向绘图区边缘空白的大小,默认为c(5, 4, 4, 2) + 0.1。

mfg,c(i,j)形式的数字向量,定义在一个图标列阵中,哪一个位置是下一个图的生成位置。

new,逻辑值,默认值为FALSE,如果设定为TRUE,那么下一个高级绘图命令会清空当前绘图设备。

oma、omi,参数形式为c(bottom, left, top, right) ,用于设定外边界

page,定义是否下一个图形生成在一个新的页面。

plt,形式为 c(x1, x2, y1, y2),设定当前的绘图区域

pty,一个字符型参数,表示当前绘图区域的形状,”s”表示生成一个正方形区域,而”m”表示生成最大的绘图区域。

xpd,如为FALSE,则所有的内容均在plot区域中显示,即坐标轴以内,如为TRUE,则所有的内容在绘图区显示,及margin内,如果NA,则所有的内容在任何区域均可。

mai与mar以及oma和omi之间的区别只是所用的单位不同。

通常情况下常用的参数只有mar和xpd,在进行图像绘制之前输入如下命令:

par(mar = c(4,2,2,1),xpd = TRUE)

mar设置绘图区域边界大小,xpd图像元素可以在边界内出现,如果xpd为FLASE,可能会导致部分图像显示不全。

页面布局

在很多情况下,我们都希望在一副图中展示多个图像,这就涉及到对绘图区域进行分隔和布局。

par()函数中的mfcol、mfrow,用于设定图像设备的布局,参数形式为c(nr, nc),子图的绘图顺序是按列还是按行就分别根据是参数指定的是mfcol还是mfrow。

par(mfcol = c(3,3))

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

par(mfrow = c(3,3))

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

mfcol和mfrow设置绘图区域的布局有一个问题,就是只能将绘图区域分成大小相等的子区域,但是我们可能希望不同的子图像所占据的绘图区域大小不一致,这时可以使用layout()函数。

layout(mat, widths = rep.int(1,ncol(mat)),heights = rep.int(1,nrow(mat)),respect = FALSE)

参数详解:

mat矩阵应用整数指定绘图区域划分和绘制的先后顺序,0表示该位置不画图,其它数值必须为从1开始的连续整数

layout(matrix(1:6,2,3))

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

默认条件下,layout同样是将绘图区平均划分。

layout(matrix(c(1,2,3,0,2,3,0,0,3),nr = 3))

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

通过0元素和其它数值的重复定义不同绘图区的形状。

layout(matrix(1:4,2,2),widths = c(1,2),heights = c(2,1))

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

通过widths和heights定义不同行和列的长宽比。

R语言中的颜色

R语言绘图中与颜色相关的参数:

可以直接通过颜色的名字或十六进制标识指定绘图所需的颜色,如需要指定颜色的元素是多个时,将颜色输入为一个向量,之后依次匹配颜色。

d <- data.frame(x = c(1:10),y = rnorm(10))#设置点的颜色为红色plot(d, col = "red", pch = 19, cex = 2)

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

自定义颜色

除了直接输入颜色的名字之外,R还支持颜色的自定义。

rgb()函数

rgb(red, green, blue, alpha, names= NULL, maxColorValue = 1)

rgb()函数利用红绿蓝三色定义一种新的颜色,red、green、blue3个参数分别制定3个颜色的成分,数值在0至maxColorValue之间,数值越大表示颜色的成分越高。

alpha表示透明度,数值同样在0至maxColorValue之间,0表示完全透明,最大值表示完全不透明。

names指定生成颜色的名称。

hsv()函数

hsv(h = 1, s = 1, v = 1, gamma = 1, alpha)

h、s、v三个参数分别对应色调、饱和度和纯度,取值于区间[0, 1]。

参数gamma表示伽玛校正3(Gamma Correction)。

alpha代表透明度,取值在区间[0,1]上。

hcl()函数

hcl(h = 0, c = 35, l = 85, alpha, fixup = TRUE)

h取值在区间[0,360]上,可以将它想象为一个角度:0表示红色,120表示绿色,240表示蓝色,中间的都是过渡色。

l取值在区间[0, 100]上,取值越大生成的颜色越亮。

c取值受h和l限制,alpha表示透明度。

fixup表示是否修正生成的颜色值,之所以要修正,是因为有些搭配生成的RGB颜色(r, g, b)可能出现某一个元素超过1的情形。

gray()函数

gray(level)

gray()函数只有一个level参数,表示灰度水平,取值在0~1之间,0表示纯黑色,1表示纯白色

连续梯度颜色

除了指定与有限参数匹配的颜色之外,有时还需要指定一个连续的颜色变化以表示数值在指定区间内的位置。

#彩虹色rainbow(n, s = 1, v = 1, start = 0, end= max(1, n - 1)/n, gamma = 1)#从红色渐变到黄色再变到白色heat.colors(n, alpha = 1)#从绿色渐变到黄色再到棕色最后到白色terrain.colors(n, alpha = 1)#从青色渐变到白色再到粉红色topo.colors(n, alpha = 1)#从蓝色渐变到青色再到黄色最后到棕色cm.colors(n, alpha = 1)

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

n设定颜色梯度中色块的数目,aplha表示透明度。

彩虹色设置中,start和end代表颜色的起始和终止,红色(red)为0,黄色(yellow)为1/6、绿色(green)为2/6、青色(cyan)为3/6,蓝色(blue)为4/6,紫色(magenta)为5/6.

RColorBrewer

除了手动设置颜色以外,R还提供了一系列设置好的配色方案已备用户使用,其中使用最为广泛的就是RColorBrewer包

install.packages("RColorBrewer")library(RColorBrewer)

RColorBrewer包提供了多个设置好的配色方案,使用brewer.pal()函数调用。

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

brewer.pal(n,names)

n为需要颜色的个数,names为配色方案的名称。

data <- replicate(8,rnorm(10, 10, sd = 1.2))#调用Set3配色的前8个颜色boxplot(data, col= brewer.pal(8,"Set3"))

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

需要的颜色数目大于配色方案给出的颜色数目时,使用colorRampPalette()命令自动生成不足的颜色。

#对之前生成的数据进行统计,形成新的数据表data1 <- table(round(data))#制作配色方案col1 <- colorrampPalette(brewer.pal(8,"Dark2))(length(data1))#使用新的配色方案绘图pie(data1, col = col1)

R语言|plot和par函数绘图详解,绘图区域设置 颜色设置 绘图后修改及图像输出

如只想选择配色方案中的一个特定颜色,可以使用[]进行指定,[]内为指定颜色在配色方案中的位置。

col2 <- brewer.pal(9,"Set3)[6]

绘图后修改

通常我们使用基本的绘图命令得到的基本图像并不能让我们满意,这就需要在基本图形的基础上对各个元素进行修改,主要涉及的内容基本上就是坐标轴、文字、图例或添加指示符号等等,今天主要介绍这些元素修改的命令及其中个参数的意义,大家可以收藏一波方便以后查找,在接下来的推文中会以实例的方式详细介绍各个命令的使用情况和使用方法。

坐标轴

axis(side,at=,labels=,pos=,lty=,col=,las=,tck=,……)

各参数意义:

axis()函数只能设置一种刻度线,但有时我们希望同时展示主要和次要两种刻度线,此时可以使用Hmis包的minor.tick()函数

library(Hmisc)#载入包minor.tick(nx=n,ny=n,tick.ration=n)

各参数意义:

文字

标题修改

title(main = NULL, sub = NULL, xlab = NULL, ylab = NULL, line = NA, outer = FALSE, ...)

各参数意义:

轴标题的修改

有时我们可能只希望修改x或y轴中的某一个,或者在绘制双横/纵轴图像时在图像上方或右侧添加轴标题,此时可以使用mtext()函数。

mtext(text, side = 3, line = 0, outer = FALSE, at = NA, adj = NA, padj = NA, cex = NA, col = NA, font = NA, ...)

各参数意义:

在指定位置添加文字

text(x, y = NULL, labels = seq_along(x), adj = NULL, pos = NULL, offset = 0.5, vfont = NULL, cex = 1, col = NULL, font = NULL, ...)

各参数意义:

图例

在R的基本语法中,图例使用legend()命令进行设置。

legend(x, y = NULL, legend, fill = NULL, col = par("col"), border = "black", lty, lwd, pch, angle = 45, density = NULL, bty = "o", bg = par("bg"), box.lwd = par("lwd"), box.lty = par("lty"), box.col = par("fg"),pt.bg = NA, cex = 1, pt.cex = cex, pt.lwd = lwd, xjust = 0, yjust = 1, x.intersp = 1, y.intersp = 1, adj = c(0, 0.5), text.width = NULL, text.col = par("col"),text.font = NULL, merge = do.lines && has.pch, trace = FALSE, plot = TRUE, ncol = 1, horiz = FALSE, title = NULL, inset = 0, xpd, title.col = text.col, title.adj = 0.5, seg.len = 2)

各参数意义:

指示符号

线段

R中使用segments()命令绘制线段。

segments(x0, y0, x1 = x0, y1 = y0, col = par("fg"), lty = par("lty"), lwd = par("lwd"), ...)

各参数意义:

箭头

R中使用arrows()命令绘制箭头符号。

arrows(x0, y0, x1 = x0, y1 = y0, length = 0.25, angle = 30, code = 2, col = par("fg"), lty = par("lty"), lwd = par("lwd"), ...)

各参数意义:

矩形框

R中使用rect()命令绘制矩形框。

rect(xleft, ybottom, xright, ytop, density = NULL, angle = 45, col = NA, border = NULL, lty = par("lty"), lwd = par("lwd"), ...)

各参数意义:

多边形

R中使用polygon()命令绘制多边形。

polygon(x, y = NULL, density = NULL, angle = 45, border = NULL, col = NA, lty = par("lty"), ..., fillOddEven = FALSE)

各参数意义:

椭圆

R中可以使用plotrix包中的draw.ellipse()函数绘制椭圆。

draw.ellipse(x, y, a = 1, b = 1, angle = 0, segment = c(0, 360), arc.only = TRUE, deg = TRUE, nv = 100, border = NULL, col = NA, lty = 1, lwd = 1, ...)

各参数意义:

发表回复