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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/703885.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Go API

Go语言提供了大量的标准库&#xff0c;因此 google 公司也为这些标准库提供了相应的API文档&#xff0c;用于告诉开发者如何使用这些标准库&#xff0c;以及标准库包含的方法。官方位置&#xff1a;https://golang.org Golang中文网在线标准库文档: https://studygolang.com/p…

函数递归(C语言)(详细过程!)

函数递归 一. 递归是什么1.1 递归的思想1.2 递归的限制条件 二. 递归举例2.1 求n的阶乘2.2 按顺序打印一个整数的每一位 三. 递归与迭代3.1 求第n个斐波那契数 一. 递归是什么 递归是学习C语言很重要的一个知识&#xff0c;递归就是函数自己调用自己&#xff0c;是一种解决问题…

与浪涌保护器相关的8/20μs和10/350μs波形

8/20μs和10/350μ是到底是什么&#xff1f; 浪涌保护器中有个极为重要的参数&#xff0c;8/20μs或10/350μs。浪涌保护器的作用主要是保护电子设备免受电源浪涌或瞬态电压影响的重要装置。主要应对雷击&#xff0c;包括直击雷和感应雷。由于直击雷和感应雷的能量不一样&…

RabbitMQ实践——在Ubuntu上安装并启用管理后台

大纲 环境安装启动管理后台 RabbitMQ是一款功能强大、灵活可靠的消息代理软件&#xff0c;为分布式系统中的通信问题提供了优秀的解决方案。无论是在大规模数据处理、实时分析还是微服务架构中&#xff0c;RabbitMQ都能发挥出色的性能&#xff0c;帮助开发者构建高效、稳定的系…

《Windows API每日一练》3.3 更好效果的滚动条

本节讲述滚动条的复杂使用方法&#xff0c;以便达到更好的效果。Windows操作系统提供了两套机制&#xff0c;一套机制是使用默认的对象属性进行简单的操作&#xff0c;并提供简单便捷的API接口函数。另一套机制是用户可以自定义对象属性&#xff0c;实现自己想要的效果。本节我…

【ARM Cache 及 MMU 系列文章 6.1 -- Cache maintenance 指令及相关寄存器有哪些?】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Cache Maintenance registers and instructionsDCZID_EL0DCZID_EL0寄存器字段解释 DCZ 使用场景Cache maintenance 范围选择 Cache maintenance 指令集 Cache Maintenance registers a…

公司活动想找媒体报道宣传怎样邀请媒体?

在当今信息爆炸的时代,对于正处于成长阶段的中小企业而言,有效且成本控制得当的宣传策略是推动品牌发展、扩大市场影响力的关键。尤其是在预算有限的情况下,如何让“好钢用在刀刃上”,实现宣传效果的最大化,成为众多企业共同面临的挑战。在此背景下,智慧软文发布系统网站作为一…

IDEA 高效插件工具

文章目录 LombokMaven Helper 依赖冲突any-rule(正则表达式插件)快速生成javadocGsonFormat (Aits) 将json解析成类Diagrams使用 类图SequenceDiagram时序图GenerateAllSetter&#xff08;AltEnter&#xff09;大小写转写String ManipulationGitToolBox 代码提交人activate-pow…

机器学习笔记 - 用于3D数据分类、分割的Point Net简述

一、简述 在本文中,我们将了解Point Net,目前,处理图像数据的方法有很多。从传统的计算机视觉方法到使用卷积神经网络到Transformer方法,几乎任何 2D 图像应用都会有某种现有的方法。然而,当涉及到 3D 数据时,现成的工具和方法并不那么丰富。3D 空间中一个工具就是Point …

springboot的WebFlux 和Servlet

Spring Boot 中的 Servlet 定义&#xff1a; 在 Spring Boot 中&#xff0c;Servlet 应用程序通常基于 Spring MVC&#xff0c;它是一个基于 Servlet API 的 Web 框架。Spring MVC 提供了模型-视图-控制器&#xff08;MVC&#xff09;架构&#xff0c;用于构建 Web 应用程序。…

颠覆与创新:探寻Facebook未来的发展路径

Facebook&#xff0c;这个曾经引领社交网络革命的巨头&#xff0c;在如今竞争激烈的科技市场中&#xff0c;正面临着前所未有的挑战和机遇。如何在不断变化的数字世界中保持竞争力&#xff0c;成为业界领先者&#xff0c;这是摆在Facebook面前的重要课题。本文将探寻Facebook未…

STM32项目分享:车牌号识别系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.…

【Mac】增加 safari 体验的插件笔记

Safari 本身的功能不全面&#xff0c;探索积累了一点插件笔记&#xff0c;提升使用体验&#xff1b;但后面因为插件或会影响运行速度&#xff0c;就全部都禁止了。做个笔记记录一下。 Cascadea 相当于 stylus&#xff0c;可以自定义页面。测试过几个&#xff0c;只有几个可行。…

Linux so文件无法找到及某条命令找不到的解决办法

前言 在一些定制软件中可能会自带so文件。或者自带一些二进制命令。 这时会如果运行某个程序会发生 **.so 文件无法找到的错误。 以及 * 某条命令无法找到的错误。 比如像是下面这样 解决办法&#xff1a; so文件无法找到 通过往 LD_LIBRARY_PATH 变量中追加路径来告诉程序…

数组还可以这样用!常用但不为人知的应用场景

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

Linux:多线程的操作

多线程操作 进程与线程线程的创建 create_pthread创建线程池给线程传入对象的指针 线程等待 pthread_join退出线程 pthread_exit线程等待参数 retval 与 线程退出参数 retval 线程中断 pthread_cancel获取线程编号 pthread_self线程分离 pthread_detach 进程与线程 进程是资源…

为CAP面板天添加简单的认证功能 C#|.net

做过后端的比较熟悉&#xff0c;CAP面板有个界面&#xff0c;可以通过域名加cap访问&#xff1a; 但是这个面板直接通过url就可以访问了。 Hangfire Dashboard有自己的面板&#xff0c;可以使用用户名和密码做简单的认证。 LogDashboard也有自己的面板&#xff0c;可以使用用…

Apache HttpClient总览

一、重大版本 Apache HttpClient 4.x 系列 • HttpClient 4.0&#xff08;发布于2008年左右&#xff09;&#xff1a;这是一个重要的里程碑&#xff0c;标志着HttpClient从Jakarta Commons项目转移到Apache HttpComponents项目。4.0版进行了大量的重构&#xff0c;引入了新…

谷歌利用人工智能来推动搜索,显示出其组织信息的方式存在问题

谷歌利用人工智能来推动搜索&#xff0c;显示出其组织信息的方式存在问题 从相关文件到新闻报道、商业、音乐和社会互动&#xff0c;世界上的大部分信息现在都在网上。谷歌成立于1998年&#xff0c;其使命是“组织世界上的信息&#xff0c;使其普遍可用和有用”&#xff0c;它…

STM32理论 —— μCOS-Ⅲ(2/2):时间管理、消息队列、信号量、任务内嵌信号量/队列

文章目录 9. 时间管理9.1 OSTimeDly()9.2 OSTimeDlyHMSM()9.3 OSTimeDlyResume()9.4 延时函数实验 10. 消息队列10.1 创建消息队列函数OSQCreate()10.2 发送消息到消息队列函数(写入队列)OSQPost()10.3 获取消息队列中的消息函数(读出队列)OSQPend()10.4 消息队列操作实验 11. …