R语言统计分析——图形文本、自定义坐标轴和图例

参考资料:R语言实战【第2版】

        我们可以在图形上添加标题(main)、副标题(sub)、坐标轴标签(xlab、ylab)并指定标轴范围(xlim、ylim)。

# 录入数据
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',
     col='red',lty=2,pch=2,lwd=2,
     main='Clinical Trials for DrugA',
     sub="This is hypothetical Response",
     xlab='Dosage',ylab='Drug Response',
     xlim=c(0,60),ylim=c(0,70))

1、标题

        可是使用title()函数为图形添加标题和坐标轴标签。调用格式如下:

title(main='main title',sub='subtitle',xlab='x-axis label',ylab='y-axis label')

       函数title()一般来说被用于添加信息到一个默认标题和坐标轴标签被ann=FALSE选项被移除的图形中。

        函数title()中也可以指定其他图形参数(如文本大小、字体、旋转角度和颜色)。如下代码将生成红色的标题和蓝色的副标题,以及比默认大小小25%的绿色x轴、 y轴标签:

plot(dose,drugA,type='b')
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)

2、坐标轴

        我们可以使用axis()来创建自定义的坐标轴,而非使用R中的默认坐标轴。其格式为:

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

side:一个整数,表示在图形的哪边绘制坐标轴(1=下,2=左,3=上,4=右)

at:一个数值型向量,表示需要绘制刻度线的位置

labels:一个字符型向量,表示置于刻度线旁边的文字标签(如果为NULL,则直接使用at中的值)

pos:坐标轴线绘制位置的坐标(即与另一条坐标轴相交位置的值)

lty:线条类型

col:线条和刻度线的颜色

las:标签是否平行于(=0)或垂直于(=2)坐标轴

tck:刻度线的长度,以相对于绘图区与大小的分数表示(负值表示在图形外侧,正值表示在图形内侧,0表示禁用刻度,1表示绘制网格线),默认值为-0.01。

        自定义坐标轴时,我们应当禁用高级绘图函数自动生成的坐标轴。参数axes=FALSE将禁用全部坐标轴(包括坐标轴框架线)。参数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)
# 绘制x对y的图形
plot(x,y,type='b',
     pch=2,col='red',
     yaxt='n',lty=3,ann=FALSE)
# 添加x对1/x的直线
lines(x,z,type='b',pch=22,col='blue',lty=2)
# 自定义坐标轴
axis(2,at=x,labels=x,col.axis='red',las=2)
axis(4,at=z,labels=round(z,digits=2),
     col.axis='blue',las=2,cex.axis=0.7,tck=-0.01)
# 添加标题和文本
mtext('y=1/x',side=4,line=3,cex.lab=1,las=2,col='blue')
title('An Example of Creative Axes',
      xlab="X value",
      ylab='Y=X')
par(opar)

3、参考线

        函数abline()可以用来为图形添加参考线。其使用格式:

abline(h=yvalues,v=xvalues)

        函数abline()中也可以指定图形参数(如线条类型、颜色和宽度)。如下:

abline(h=c(1,5,7))
abline(v=seq(1,10,2),lty=2,col='blue')

4、图例

        当图形中包含的数据不止一组时,图例可以帮助我们辨别每个条形、扇形区域或折线各代表哪一类数据。我们可以使用函数legend()来添加图例。其使用格式为:

legend(location,title,legend,...)

location:我们可以直接给定图例左上角的x、y坐标,也可以执行locator(1),然后通过鼠标单击给出图例的位置,还可以使用关键字bottom、bottomleft、left、topleft、top、topright、right、bottomright、或center放置图例。如果我们使用了前面的某个关键字,我们还可以同时使用参数inset=指定图例向图形内侧移动的大小(以绘图区域大小的分数表示)

titile:图例标题的字符串(可选)

legend:图例标签组成的字符型向量

        其他常用的图例选项包括用于指定盒子样式的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')
# 添加次刻度
library(Hmisc)
minor.tick(nx=3,ny=3,tick.ratio=0.5)
# 添加图例
legend('topleft',inset=0.05,title='Drug Type',
       c("A","B"),lty=c(1,2),pch=c(15,17),
       col=c('red','blue'))
par(opar)

5、文本标注

        我们可以通过函数text()和mtext()将文本添加到图形上。text()可向绘图区域内添加文本;而mtext()则向图形的四个边界之一添加文本。使用格式分别为:

text(location, "text to place", pos, ...)

mtext("text to place", side, line=n,...)

location:文本的位置参数。可以为一对x、y坐标,也可通过指定location为locator(1)使用坐标交互地确定摆放位置。

pos:文本相对于位置参数的方位。1=下,2=左,3=上,4=右。如果制定了pos,就可以同时指定参数offset=作为偏移量,以相对于单个字符宽度的比例表示。

side:指定用来放置文本的边。1=下,2=左,3=上,4=右。我们可以指定参数line=来内移或外移文本,随着值得增加,文本将外移。也可以使用adj=0将文本向左下对齐,或使用adj=1右上对齐。

# 示例1
attach(mtcars)
  plot(wt,mpg,
       main='Mileage vs.Weight',
       xlab='Weight',ylab='Mileage',
       pch=18,col='blue')
  text(wt,mpg,
       row.names(mtcars),
       cex=0.6,pos=4,col='red')
detach(mtcars)

# 示例2
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)

相关推荐

  1. PythonFastAPI语义分析文本图像

    2024-06-13 07:08:03       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 07:08:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 07:08:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 07:08:03       82 阅读
  4. Python语言-面向对象

    2024-06-13 07:08:03       91 阅读

热门阅读

  1. Ubuntu 上 Vim 的安装、配置

    2024-06-13 07:08:03       19 阅读
  2. 数据库的三大范式

    2024-06-13 07:08:03       28 阅读
  3. NCCL P2P与共享内存SHM的差异

    2024-06-13 07:08:03       26 阅读
  4. 实践中ES常用命令总结

    2024-06-13 07:08:03       26 阅读
  5. 触摸芯片在物联网和人工智能上的应用

    2024-06-13 07:08:03       24 阅读
  6. 排序

    排序

    2024-06-13 07:08:03      23 阅读
  7. c++【入门】小明买水果

    2024-06-13 07:08:03       24 阅读
  8. Hugging Face Hub 使用DuckDB进行分析

    2024-06-13 07:08:03       36 阅读
  9. mysql的双机热备

    2024-06-13 07:08:03       34 阅读
  10. Redis 分布式锁过期了,还没处理完怎么办?

    2024-06-13 07:08:03       27 阅读
  11. 远程工具向日葵的安装

    2024-06-13 07:08:03       24 阅读