参考资料:R语言实战【第2版】
我们可以通过修改图形参数来自定义一幅图形的多个特征(字体、颜色、坐标轴、标签)。一种方法是通过函数par()来指定这些参数,以这种方式设定的参数除非被再次修改,否则将会在会话结束前一直有效。第二种方法时为高级绘图函数直接提供optionname=value的键值对,这种情况下指定的选项进队本图有效,但并不是所有的高级绘图函数都允许指定全部可能的图形参数。
# 方法一:
# 设置参数
opar<-par(no.readonly=TRUE)
# 设置线型lty=2,表示虚线
# 设置标记形状pch=17,表示实心三角形
par(lty=2,pch=17)
# 绘制折线图
# type='b'表示同时绘制点和线
plot(dose,drugA,type='b')
par(opar)
# 方法二
# 在函数内设置参数
plot(dose,drugA,type='b',lty=2,pch=17)
1、符号和线条
可用于指定符号和线条类型的参数如下:
pch:(plot character)指定绘制点时使用的符号。pch的参数设置为21~25时,我们还可以指定边界颜色(col=)和填充色(bg=)。
cex:(character expansion)指定符号的大小。cex是一个数值,表示绘图符号相对于默认大小的缩放倍数。默认大小为1,1.5表示放大为默认值的1.5倍,0.5表示缩小为默认值的50%。
lty:(linetype)指定线条类型。
lwd:(linewidth)指定线条宽度。lwd是以默认值的相对大小表示的(默认值为1)。例如lwd=2,将生成一条2倍于默认宽度的线条。
综上所述,以下代码可以绘制出一幅图(线条类型为点型,宽度为默认宽度的3倍,坐标点位符号为实心正方形,大小为符号大小的2倍)如下:
plot(dose,drugA,type='b',lty=3,lwd=3,pch=15,cex=2)
2、颜色
R中有若干和颜色相关的参数如下:
col(color):默认的绘图颜色。某些函数(lines和pie)可以接受一个含有颜色值的向量并自动循环使用。例如,如果设定col=c("red","blue")并需要绘制三条线,则第一条线为红色,第二条线为蓝色,第三条为红色。
col.axis:坐标轴刻度文字的颜色。
col.lab:坐标轴标签(名称)的颜色。
col.main:标题颜色。
col.sub:副标题颜色。
fg(foreground):图形前景色。
bg(background):图形背景色。
在R中,可以通过颜色下标、颜色名称、十六进制的颜色值、RGB值或HSV值来指定颜色。举例来说:col=1,col='white',col='#FFFFFF',col=rgb(1,1,1),col=hsv(0,0,1)都是表示白色的等价方式。
R中也有多种用于创建连续型颜色向量的函数,包括rainbow()、heat.colors()、terrain.colors()、topo.colors()以及cm.colors()。
对于创建吸引人的颜色配对,可以考虑使用RColorBrewer。如下:
# 下载安装包
install.packages("RColorBrewer")
# 加载包
library(RColorBrewer)
# 设置颜色数量
n<-7
# 从set1调色板中抽取7种用十六进制表示的颜色并返回一个向量
mycolors<-brewer.pal(n,'Set1')
barplot(rep(1,n),col=mycolors)
若要得到所有可选调色板的列表,输入brewer.pal.info;或者输入display.brewer.all()从而在一个显示输出中产生每个调色板的图形。如下:
maxcolors category colorblind BrBG 11 div TRUE PiYG 11 div TRUE PRGn 11 div TRUE PuOr 11 div TRUE RdBu 11 div TRUE RdGy 11 div FALSE RdYlBu 11 div TRUE RdYlGn 11 div FALSE Spectral 11 div FALSE Accent 8 qual FALSE Dark2 8 qual TRUE Paired 12 qual TRUE Pastel1 9 qual FALSE Pastel2 8 qual FALSE Set1 9 qual FALSE Set2 8 qual TRUE Set3 12 qual FALSE Blues 9 seq TRUE BuGn 9 seq TRUE BuPu 9 seq TRUE GnBu 9 seq TRUE Greens 9 seq TRUE Greys 9 seq TRUE Oranges 9 seq TRUE OrRd 9 seq TRUE PuBu 9 seq TRUE PuBuGn 9 seq TRUE PuRd 9 seq TRUE Purples 9 seq TRUE RdPu 9 seq TRUE Reds 9 seq TRUE YlGn 9 seq TRUE YlGnBu 9 seq TRUE YlOrBr 9 seq TRUE YlOrRd 9 seq TRUE
最后,多阶灰度色可使用基础安装自带的gray()函数生成。要通过一个元素值为0和1之间的向量来指定各颜色的灰度。
# 设置颜色数量
n<-10
# 导入10个彩色颜色
mycolors<-rainbow(n)
# 绘制彩色饼图
pie(rep(1,n),labels=mycolors,col=mycolors)
# 设置灰度颜色
mygrays<-gray(0:n/n)
# 绘制灰度饼图
pie(rep(1,n),babels=mygrays,col=mygrays)
3、文本属性
图形参数同样可以用来指定字号、字体和字样。如下:
cex:(character expansion)指定符号的大小。cex是一个数值,表示绘图符号相对于默认大小的缩放倍数。默认大小为1,1.5表示放大为默认值的1.5倍,0.5表示缩小为默认值的50%。
cex.axis:坐标轴刻度文字的缩放倍数。
cex.lab:坐标轴标签(名称)的缩放倍数。
cex.main:标题的缩放倍数。
cex.sub:副标题的缩放倍数。
font:整数,用于指定绘图使用的字体样式。1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体(以Adobe符号编码表示)。
font.axis:坐标轴刻度文字的字体样式。
font.lab:坐标轴标签(名称)的字体样式。
font.main:标题的字体样式。
font.sub:副标题的字体样式。
ps:字体磅值。文本的最终大小为ps*cex
family:绘制文本时使用的字体族。标准的取值为serif(衬线)、sans(无衬线)和mono(等宽)
举例:在执行此语句:par(font.lab=3,cex.lab=1.5,font.main=4,cex.main=2)之后,创建的所有图形都将拥有斜体、1.5倍于默认文本大小的坐标轴标签(名称),以及粗斜体、2倍于默认文本大小的标题。
4、图形尺寸与边界尺寸
pin:以英寸表示的图形尺寸(宽和高)
mai:以数值向量表示的边界大小,顺序为“下、左、上、右”,单位为英寸
mar:以数值向量表示的边界大小,顺序为“下、左、上、右”,单位为英分,默认值为c(5,4,4,2,)+0.1
# 录入数据
dose<-c(20,30,40,45,60)
drugA<-c(16,20,27,40,60)
drugB<-c(15,18,25,31,40)
# 设置参数
opar<-par(no.readonly=TRUE)
# 设置图形尺寸,4英寸宽,3英寸高
par(pin=c(4,3))
# 设置线条宽度为默认值的2倍
# 标记大小为默认值的1.5倍
par(lwd=2,cex=1.5)
# 设置坐标轴刻度为默认值的75%
# 设置坐标轴标签为斜体
par(cex.axis=0.75,font.axis=3)
# 绘制折线图
plot(dose,drugA,type='b',
pch=19,lty=2,col='red')
plot(dose,drugB,type='b',
pch=23,lty=6,col='blue',
bg='green')
# 还原参数设置
par(opar)