3.1 图形示例、存储及多图切换

  • 绘图示例
#图形示例
dose <- c(20, 30, 40, 45, 60) 
drugA <- c(16, 20, 27, 40, 60) 
drugB <- c(15, 18, 25, 31, 40)

plot(dose, drugA, type="b") 
#选项type="b"表示同时绘制点和线
#plot()是R中为对象作图的一个泛型函数
#(它的输出将根据所绘制对象类型的不同而变化)

#绘制图形
attach(mtcars) 
plot(wt, mpg) 
abline(lm(mpg~wt))  #在图形中添加入拟合直线
title("Regression of MPG on Weight")  #添加标题
detach(mtcars)
  • 图形存储 
#存储图片方法一
pdf("mygraph.pdf")  #将图形存储为pdf文件
 attach(mtcars) 
 plot(wt, mpg) 
 abline(lm(mpg~wt)) 
 title("Regression of MPG on Weight") 
 detach(mtcars) 
dev.off()

#存储图片方法二
#点击窗口Export中Save as
  •  多图切换 
#方法一:使用dev.new()函数
dev.new() 
statements to create graph 1
dev.new() 
statements to create a graph 2 
etc. 

#方法二
#使用视图界面的左右箭头切换

 3.2 图形参数

par() #生成一个含有当前图形参数设置的列表
par(no.readonly=TRUE) #生成一个可以修改的当前图形参数列表

par(optionname=value, 
optionname=name,...) #用于修改参数

代码示例

opar <- par(no.readonly=TRUE) #将原始参数保留为副本opar,便于参数恢复
par(lty=2, pch=17)
#句将默认的线条类型修改为虚线(lty=2)
#将默认的点符号改为了实心三角(pch=17)
#也可写成
#par(lty=2) 
#par(pch=17) 的格式
plot(dose, drugA, type="b") 
par(opar)  #恢复原始参数

#效果相同,但参数仅针对绘制图形有效
plot(dose, drugA, type="b", lty=2, pch=17)

3.2.1 符号和线条

R语言attach命令 r语言attach函数用法_坐标轴

R语言attach命令 r语言attach函数用法_代码示例_02

 

R语言attach命令 r语言attach函数用法_坐标轴_03

 代码示例

plot(dose, drugA, type="b", lty=3, lwd=3, pch=15, cex=2)

3.2.2 颜色

可以通过颜色下标、颜色名称、十六进制的颜色值、RGB值或HSV值来指定颜色

 举例来说,col=1、col="white"、col="#FFFFFF"、col=rgb(1,1,1)和col=hsv(0,0,1),都表示白色

函数rgb()可基于红-绿-蓝三色值生成颜色,而hsv()则基于色相- 饱和度-亮度值来生成颜色

R语言attach命令 r语言attach函数用法_R语言attach命令_04

colors() #返回所有可用颜色的名称

#多种用于创建连续型颜色向量的函数
rainbow()
heat.colors()
terrain.colors()
topo.colors()
cm.colors()

#颜色配对
install.packages("RColorBrewer")
library(RColorBrewer)
brewer.pal.info  #得到所有可选调色板的列表
display.brewer.all() #显示输出中产生每个调色板的图形
gray(0:10/10) #生成10阶灰度色

 3.2.3 文本属性

R语言attach命令 r语言attach函数用法_R语言attach命令_05

 

R语言attach命令 r语言attach函数用法_代码示例_06

par(font.lab=3, cex.lab=1.5, font.main=4, cex.main=2)

 3.2.4 图形尺寸与边界尺寸

R语言attach命令 r语言attach函数用法_坐标轴_07

图形参数调控代码示例

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) 
par(pin=c(2, 3)) 
par(lwd=2, cex=1.5) 
par(cex.axis=.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)

3.3 添加文本、自定义坐标轴和图例

代码示例

plot(dose, drugA, type="b", 
 col="red", lty=2, pch=2, lwd=2, 
 main="Clinical Trials for Drug A", 
 sub="This is hypothetical data", 
 xlab="Dosage", ylab="Drug Response", 
 xlim=c(0, 60), ylim=c(0, 70)) 

#xlab:x轴标签
#ylab:y轴标签
#sub:副标题
#xlim:x轴范围

运行结果

R语言attach命令 r语言attach函数用法_代码示例_08

 注意事项

  • 并非所有函数都支持这些选项
  • 某些高级绘图函数已经包含了默认的标题和标签。你可以通过在plot()语句或单独的 par()语句中添加 ann=FALSE 来移除它们。

3.3.1 标题

title()函数

#添加标题
title(main="main title", sub="subtitle", 
 xlab="x-axis label", ylab="y-axis label")

#设置颜色
title(main="My Title", col.main="red", 
 sub="My Subtitle", col.sub="blue", 
 xlab="My X label", ylab="My Y label", 
 col.lab="green", cex.lab=0.75)

3.3.2 坐标轴

R语言attach命令 r语言attach函数用法_坐标轴_09

R语言attach命令 r语言attach函数用法_图例_10

注意

  • 参数axes=FALSE将禁 用全部坐标轴,包括坐标轴框架线
  • 参数frame.plot=TRUE则可恢复坐标轴框架线,但刻度不可恢复
  • 参数xaxt="n"和 yaxt="n"将分别禁用X轴或Y轴(会留下框架线,刻度线被去除)

代码示例

x <- c(1:10) 
y <- x 
z <- 10/x 
opar <- par(no.readonly=TRUE)

par(mar=c(5, 4, 4, 8) + 0.1)
plot(x, y, type="b",
 pch=21, col="red", 
 yaxt="n", lty=3, ann=FALSE) 

lines(x, z, type="b", pch=22, col="blue", lty=2) 

axis(2, at=x, labels=x, col.axis="red", las=2)
#其中labels是指坐标轴刻度的标签

axis(4, at=z, labels=round(z, digits=2), 
 col.axis="blue", las=2, cex.axis=0.7, tck=-.01)

mtext("y=1/x", side=4, line=3, cex.lab=1, las=2, col="blue") 
#用于在图形的边界添加文本,其中line表示距离边界线的远近距离

title("An Example of Creative Axes",
 xlab="X values", 
 ylab="Y=X") 

par(opar)

3.3.3 参考线

abline(h=yvalues, v=xvalues)

abline(h=c(1,5,7))
#在y为1、5、7的位置添加了水平实线

abline(v=seq(1, 10, 2), lty=2, col="blue")
#在x为1、3、5、7、9的位置添加了垂直的蓝色虚线

3.3.4 图例

R语言attach命令 r语言attach函数用法_代码示例_11

bty:指定盒子样式

bg:指定背景色

cex:指定大小

text.col:指定文本颜色

horiz=TRUE:水平放置图例 

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) 

par(lwd=2, cex=1.5, font.lab=2)

plot(dose, drugA, type="b", 
 pch=15, lty=1, col="red", ylim=c(0, 60),
 main="Drug A vs. Drug B", 
 xlab="Drug Dosage", ylab="Drug Response")

lines(dose, drugB, type="b", 
 pch=17, lty=2, col="blue") 

abline(h=c(30), lwd=1.5, lty=2, col="gray") 

#Hmisc包中的tick.ratio()函数用于添加次刻度线
library(Hmisc) 
minor.tick(nx=3, ny=3, tick.ratio=0.5)
#nx和ny表示刻度线间的区间数,tick.ratio表示次刻度线相对主刻度线的长度

legend("topleft", inset=.05, title="Drug Type", c("A","B") 
 lty=c(1, 2), pch=c(15, 17), col=c("red", "blue"))
#当图例用关键词设置位置后,inset = 分数,可以设置其相对位置

par(opar)

R语言attach命令 r语言attach函数用法_坐标轴_12

3.3.5 文本标注

R语言attach命令 r语言attach函数用法_图例_13

代码示例一 

attach(mtcars) 

plot(wt, mpg, 
 main="Mileage vs. Car Weight", 
 xlab="Weight", ylab="Mileage", 
 pch=18, col="blue") 

text(wt, mpg, 
 row.names(mtcars), 
 cex=0.6, pos=4, col="red") 
#wt,mpg分别定位x和y的位置,row.names()返回行名
detach(mtcars)

 

R语言attach命令 r语言attach函数用法_图例_14

代码示例二 

opar <- par(no.readonly=TRUE) 
par(cex=1.5) 
plot(1:7,1:7,type="n") 
text(3,3,"Example of default text") 
text(4,4,family="mono","Example of mono-spaced text") 
text(5,5,family="serif","Example of serif text") 
par(opar)

R语言attach命令 r语言attach函数用法_图例_15

 3.3.6 数学标注

R语言attach命令 r语言attach函数用法_坐标轴_16

3.4 图形的组合

  • 函数par()

参数mfrow=c(nrows, ncols) 按行填充

参数mfcol=c(nrows, ncols) 按列填充

代码示例

#示例一
attach(mtcars) 
opar <- par(no.readonly=TRUE) 
par(mfrow=c(2,2))
plot(wt,mpg, main="Scatterplot of wt vs. mpg") 
plot(wt,disp, main="Scatterplot of wt vs. disp") 
hist(wt, main="Histogram of wt") 
boxplot(wt, main="Boxplot of wt") 
par(opar) 
detach(mtcars) 

#示例二
attach(mtcars) 
opar <- par(no.readonly=TRUE) 
par(mfrow=c(3,1)) 
hist(wt) 
hist(mpg) 
hist(disp) 
par(opar) 
detach(mtcars) 
#注:图函数hist()包含了一个默认的标题
#使用main=""可以禁用它
#或使用ann=FALSE来禁用所有标题和标签

示例一结果 

R语言attach命令 r语言attach函数用法_坐标轴_17

示例二结果

 

R语言attach命令 r语言attach函数用法_R语言attach命令_18

  • 函数layout()

参数widths = 各列宽度值组成的一个向量

参数heights = 各行高度值组成的一个向量

代码示例 

#示例一
attach(mtcars) 
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE)) 
#矩阵表示图形的填充顺序,0为不填充
hist(wt) 
hist(mpg) 
hist(disp) 
detach(mtcars) 

#示例二
attach(mtcars) 
layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE), 
 widths=c(3, 1), heights=c(1, 2)) 
hist(wt) 
hist(mpg) 
hist(disp) 
detach(mtcars)

 示例一结果

R语言attach命令 r语言attach函数用法_R语言attach命令_19

 示例二结果

R语言attach命令 r语言attach函数用法_图例_20

 

  • 函数fig=

1、参数fig=的取值是一个形如c(x1, x2, y1, y2)的数值向量

R语言attach命令 r语言attach函数用法_图例_21

 

2、fig=默认会新建一幅图形,所 以在添加一幅图到一幅现有图形上时,请设定参数new=TRUE

代码示例

opar <- par(no.readonly=TRUE) 
par(fig=c(0, 0.8, 0, 0.8)) 
plot(mtcars$wt, mtcars$mpg, 
 xlab="Miles Per Gallon", 
 ylab="Car Weight") 

par(fig=c(0, 0.8, 0.55, 1), new=TRUE) 
boxplot(mtcars$wt, horizontal=TRUE, axes=FALSE)
#horizontal=TRUE表示图形水平
#axes=FALSE表示去除坐标轴

par(fig=c(0.65, 1, 0, 0.8), new=TRUE) 
boxplot(mtcars$mpg, axes=FALSE)

mtext("Enhanced Scatterplot", side=3, outer=TRUE, line=-3) 
par(opar)

运行结果

R语言attach命令 r语言attach函数用法_R语言attach命令_22