第9次课—初级绘图函数plot

黄利东

06/05/2021

plot函数简单用法: Generic X-Y Plotting

以R语言自带的mtcars数据集为例

> plot(mtcars$wt)#当只有一个参数时,索引与值

> plot(mtcars$wt, mtcars$mpg)

> plot(mtcars)#也就是所谓的图集

(一)修改图形主体部分

修改类型

增加一个type参数,即可修改图形的类型了

图9-1:plot绘图类型

> plot(mtcars$wt, mtcars$mpg,type = "p")#点图

> plot(mtcars$wt, mtcars$mpg,type = "l")#折线图

> plot(mtcars$wt, mtcars$mpg,type = "b")#点折线图

> plot(mtcars$wt, mtcars$mpg,type = "o")#连点图

> plot(mtcars$wt, mtcars$mpg,type = "h")#垂直图

> plot(mtcars$wt, mtcars$mpg,type = "s")#阶梯图

(二)修改图像元素大小

cex : 修改点图中点的大小 lwd :修改线图中线的粗细

> plot(mtcars$wt, mtcars$mpg,cex=1)

> plot(mtcars$wt, mtcars$mpg,cex=2)

(三)修改图形元素的形状

pch: 修改点的类型

lty :修改线条的类型

> plot(mtcars$wt, mtcars$mpg,pch=1)

> plot(mtcars$wt, mtcars$mpg,pch=2)

图9-2:plot绘图所用的点类型

图9-3:plot绘图所用的线类型

(四)修改图形元素的颜色

col: 设置颜色

-col: 取值可以是颜色名称如“blue”,RGB值如rgb(0,0,1),颜色代码如“#0000FF”

-运行colours()可以获取颜色的名称,总共有657种 图9-4:plot绘图所用的657种颜色类型

-运行rainbow(n)可以获得n种彩虹色

> plot(mtcars$wt, mtcars$mpg,cex=3,pch=1,col=rainbow(10))

> plot(mtcars$wt, mtcars$mpg,cex=3,pch=1,col=as.factor(mtcars$vs))#根据发动机排列类型标记颜色

(五)设置图形标题

main:设置主标题

sub:设置次标题

xlab:设置x轴标题

ylab:设置y轴标题

> plot(mtcars$wt, mtcars$mpg,
+      cex=3,pch=1,col=rainbow(10),
+      xlab = "Weight",
+      ylab="Miles per gallon"
+      )

(六)修改文字大小

cex.axis : 坐标轴刻度文字大小

cex.lab: 坐标轴标题文字大小

cex.main : 主标题文字大小

cex.sub :次标题文字大小

(七)修改文字字体

font.axis : 设置坐标刻度字体,1常规字体,2加粗字体,3斜体字,4斜体加粗

font.lab:设置坐标轴标题字体,取值同font.axis

font.main :设置主标题字体,取值同font.axis

font.sub :设置次标题字体,取值同font.axis

family:设置字体样式系列,family = ‘serif’,family = ‘sans’,family = ‘mono’

(八)添加标题和禁用标题

ann = FALSE : 设置之后即可不显示原标题

title() : 使用title()函数可以为图形另外设置标题,其参数与plot()函数中设置标题的参数相同

> plot(mtcars$wt, mtcars$mpg,
+      cex=3,pch=1,col=rainbow(10),
+      xlab = "Weight",
+      ylab="Miles per gallon",
+      ann=F
+      )
> 
> plot(mtcars$wt, mtcars$mpg,
+      cex=3,pch=1,col=rainbow(10),
+      xlab = "Weight",
+      ylab="Miles per gallon",
+      ann=F
+      )
> title(xlab = "Weight",
+       col.lab = "orange",
+       cex.lab = 1.5, font.lab = 3)

(九)隐藏框架线及坐标轴

fram.plot = FALSE : 隐藏框架线

xaxt = “n” : 隐藏X轴,会留下框架

yaxt = “n” : 隐藏Y轴,会留下框架

axes=FALSE:隐藏所有坐标轴及框架线

(十)设置坐标轴取值范围

xlim: 设置x轴取值范围

ylim: 设置y轴取值范围

> plot(mtcars$wt, mtcars$mpg,
+      cex=1,pch=1,col=rainbow(10),
+      xlab = "Weight",
+      ylab="Miles per gallon",
+      ylim=c(0,35),
+      xlim=c(0,6)
+      )

(十一)修改图形整体尺寸大小

通过par()函数进行调节

no.readonly = TRUE : 设置画板的参数为可修改状态

pin: 以英寸表示的图形尺寸(宽和高)

mai: 以数值向量表示的边界大小,顺序为“下、左、上、右”,单位为英寸

mar: 以数值向量表示的边界大小,顺序为“下、左、上、右”,单位为英分。默认(5,4,4,2)+ 0.1

> opar <- par(no.readonly = TRUE)
> par(pin = c(3,5), mar = c(5,8,2,6))
> 
> plot(mtcars$wt, mtcars$mpg,
+      cex=1,pch=1,col=rainbow(10),
+      xlab = "Weight",
+      ylab="Miles per gallon",
+      ylim=c(0,35),
+      xlim=c(0,6)
+      )

> par(opar)

(十二)给图形添加参考线

通过abline()函数添加

参数

v : 垂直参考线的位点

h : 水平参考线的位点

lty: 参考线的样式

col:参考线的颜色

> plot(mtcars$wt, mtcars$mpg,
+      cex=1,pch=1,col=rainbow(10),
+      xlab = "Weight",
+      ylab="Miles per gallon",
+      ylim=c(0,35),
+      xlim=c(0,6)
+      )
> abline(v = seq(0,6,1), h = seq(0,35,5), lty = 3, col = "blue")

(十三)添加文本

text()向绘图区域内部添加文本

text(x, y , labels , pos , cex , col )

x: 标注位点的横坐标

y : 标注位点的纵坐标

labels: 所要添加的标注内容

pos: 标注所在相对位置,1,2,3,4 分别代表下,左,上,右

cex: 字体大小

col: 字体颜色

mtext()向图形四个边界之一添加文本

labels : 所要添加的标注内容

side : 1,2,3,4分别代表下,左,上,右四个边界

line : 相对边界线的偏移距离

las : 标注文字的方向,0,1,垂直或水平

(十四)组合多个图形

使用par()中的mfrow与mfcol参数组合图形

> attach(mtcars)
> opar <- par(no.readonly = TRUE)
> par(mfrow = c(2,2))
> plot(wt, mpg,
+      cex=1,pch=1,col=rainbow(10),
+      xlab = "Weight",
+      ylab="Miles per gallon",
+      ylim=c(0,35),
+      xlim=c(0,6)
+      )
> abline(v = seq(0,6,1), h = seq(0,35,5), lty = 3, col = "blue")
> hist(mpg)#频率图
> plot(am,mpg)#散点图
> plot(as.factor(am),mpg)#柱形图

> par(opar)
> detach(mtcars)

(十五)精细调整各图形的比例

使用函数layout()组合图形

mat : 一个矩阵,设置图形的总体布局

widths: 向量,设置图形矩阵中每列相对宽度

heights: 向量,设置图形矩阵中每行的相对高度

> attach(mtcars)
> layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
> plot(wt~mpg)
> hist(mpg)
> plot(as.factor(am),mpg)

> detach(mtcars)

(十六)par()中fig参数设置图形位置,叠加图形

fig

整个画布大可以理解为fig = c(0,1,0,1), 向量中的4个数依次代表:x轴起始位置0,x轴结束位置1,y轴起始位置0,y轴结束位置1

把图形摆放在画面由半部分,设置fig = c(0.5,1,0,1)

把图放在右上四分之一的位置,设置fig = c(0.5,1,0.5,1)

> attach(mtcars)
> opar <- par(no.readonly=TRUE)
> par(fig=c(0, 0.8, 0, 0.8))
> plot(wt, mpg,
+ xlab="Miles Per Gallon",
+ ylab="Car Weight")
> par(fig=c(0, 0.8, 0.55, 1), new=TRUE)#new 表示在原有图形上加图
> boxplot(wt, horizontal=TRUE, axes=FALSE)
> par(fig=c(0.65, 1, 0, 0.8), new=TRUE)
> boxplot(mpg, axes=FALSE)
> mtext("Enhanced Scatterplot", side=3, outer=TRUE, line=-3)

> par(opar)
> detach(mtcars)

课堂练习:生成二维随机正态数,分别绘制数值散点图和边缘分布

> set.seed(123)
> x=rnorm(500)
> set.seed(110)
> y=rnorm(500)
> opar <- par(no.readonly=TRUE)
> par(fig=c(0, 0.8, 0, 0.8))
> plot(x,y)
> par(fig=c(0, 0.8, 0.55, 1), new=TRUE)
> plot(density(x),axes=F,frame.plot=F, xlab="", ylab="",main="")
> par(fig=c(0.65, 1, 0, 0.8), new=TRUE)
> plot(density(y)$y,density(y)$x,axes=F,frame.plot=F, xlab="", ylab="",main="",type = "l")

> par(opar)