0
点赞
收藏
分享

微信扫一扫

R语言与医学统计图形【6】低级绘图函数

R语言基础绘图系统

基础绘图包之低级绘图函数——定义坐标轴、图例、文本

低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素。

函数

功能

arrows

添加箭头

axis

坐标轴

box

图形边框

abline

添加直线

clip

修剪图形

locator

识别图中点的坐标

layout

切分画布

legend

添加图例

lines

添加线条

segments

添加线段

rug

添加小地毯

polygon

构建多边形

points

添加散点

titles

添加标题

text

添加文字

mtext

在图形四周添加文字

grid

添加背景网格线

1.自定义坐标轴及文本

N <- 200
x <- seq(-4,4,length=N)
y1 <- sin(x)
y2 <- cos(x)

op <- par(mar=c(5,4,4,4))
xlim <- range(x) #返回最大值和最小值
ylim <- c(-1.1,1.1)
plot(x,y1,col='blue',type='l',
     xlim = xlim,ylim=ylim,
     axes=F, #先不画坐标
     xlab = '',ylab = '',main = 'title')
axis(1)
#axis中1,2,3,4分别表示下,左,上,右坐标
axis(2,col = 'blue')

par(new=T) #在刚绘好的图上添加新图
plot(x,y2,col='red',type='l',
     xlim=xlim,ylim=ylim,
     axes = F,xlab = '',ylab = '',main = '')
axis(4,col = 'red')
#添加边缘文字
mtext('first Y axis',2,line = 2,col = 'blue',cex = 1.2)
#mtext第二个参数1,2,3,4也是表下左上右
mtext('second Y axis',4,line = 2,col = 'red',cex=1.2)

R语言与医学统计图形【6】低级绘图函数_坐标轴
自定义不同的纵坐标。


plot(rnorm(100),axes = F,col='orange',pch=16,
     ylab = 'scatter points',xlab = 'x axis',
     ylim = c(-3.5,3.5))
#par函数中xaxt/yaxt设为n,表示不绘制坐标轴刻度和标签,但仍有一条坐标轴线
#这和axes稍有不同

axis(1,at=seq(0,100,10), #定义刻度线位置
     labels = LETTERS[1:11],
     col = 'red',lwd = 1.3, #坐标轴颜色
     col.ticks = 'pink') #刻度颜色

axis(2,at=seq(-3,3,1),col = 'blue',
     col.ticks = 'sky blue',lwd = 1.3)
#当自定义的坐标轴不能完全显示时(画布太小),可设置xlim/ylim解决

abline(h=0, #y轴为0的水平线
       col='red',lwd=2,lty=2)

curve(sin, 
      0,100, #from...to...
      add = T) #添加到现有图形

R语言与医学统计图形【6】低级绘图函数_图例_02

2.图例


a=c(1:5)
b=c(2,3,3,4,5)
c=c(4,5,2,3,1)

plot(b~a,type='b',bty='l',
     xlab='value of a',ylab='value of b',
     col='red',lwd=3,pch=17,ylim=c(1,5))
lines(c~a,col='blue',lwd=3,pch=19,type='b')

legend(#'bottomleft', #位置参数:字符串 topright
       3,5, #位置参数:坐标位置
       legend=c('Group 1',"Group 2"), #图例标签
       col = c('red','blue'), #图例填充色
       pch=c(17,19), #图标形状
       bty='n', #定义边框,n不要
       pt.cex = 2, #图标大小
       cex = 1.2, #标签文字大小
       text.col = 'black', #标签文字颜色
       horiz = F, #是否水平放置,默认F(垂直)
       inset = c(0.1,0.1),#距离x、y轴程度,0-1
       x.intersp = 0.1, #水平图标间距
       y.intersp = 0.4) #竖直图标间距
#后两个参数对于图形中图例非常多时很有用

R语言与医学统计图形【6】低级绘图函数_自定义_03

plot(iris$Sepal.Length~iris$Sepal.Width,
     pch=c(21:23)[iris$Species], 
     #三种不同点型对应三个不同品种
     col=c('orange','sky blue','pink')[iris$Species],
     bg=c('orange','sky blue','pink')[iris$Species])

legend( #x=3.7,y=8.0, #坐标法
        locator(1), #去图上找一个合适位置,左击鼠标
       legend = c('Setosa','Versicolor','Virginica'),
       col=c('orange','sky blue','pink'),
       pch = 21:23,
       pt.cex = 2,
       y.intersp = 0.8, #图例间距
       pt.bg = c('orange','sky blue','pink'))

R语言与医学统计图形【6】低级绘图函数_图例_04

3. 添加文本

x <- rnorm(1000)
hist(x,xlim = c(-4,4))
usr <- par('usr') #为找到画布四个角的坐标,左下角/右下角/左上角/右下角
clip(usr[1],-1,usr[3],usr[4])
#切割画布
hist(x,col = 'red',add=T)
text(-3,50,labels = 'red area',
     col = 'red',srt=60,cex=2)

#切割另一个矩形
clip(1,usr[2],usr[3],usr[4])
hist(x,col = 'blue',add=T)
text(x=3,y=50,labels = 'blue area',
     col='blue',srt=300,cex=2)

R语言与医学统计图形【6】低级绘图函数_自定义_05
示例2.

data <- sample(20:80,20)
par(mar=c(4,3,3,1))
barcenter <- barplot(data,col='skyblue',axes = F,
                     ylim = c(-5,100)) #限定y轴范围,为了使后面文本显示出来
#存储了条柱中心横坐标
axis(2,at=seq(0,100,10))
text(barcenter,-2,labels = LETTERS[1:20],
     col = 'red',cex = 0.8)

R语言与医学统计图形【6】低级绘图函数_自定义_06

示例3.

mycars <- data.frame(car=c('Honda','Benz','BMW',
                           'Audi','Chery','Toyota','Ford'),
                     mtg=c(4,5.2,5.5,2.8,1.8,2.8,3))
plot(mycars$mtg,cex=mycars$mtg,col='pink',pch=21,
     bg='lightblue',ylab='cars\' mtg',xlab='cars',
     xlim = c(0,7.5))
text(1:7,mycars$mtg,labels = mycars$car)

R语言与医学统计图形【6】低级绘图函数_坐标轴_07


作者:Bioinfarmer

 若要及时了解动态信息,请关注同名微信公众号:Bioinfarmer。


举报

相关推荐

0 条评论