R语言绘图——文本注释

在R语言中,文本注释通常用于向图形中添加注释或说明,可以通过一些函数在图形上添加文字、标签等。以下是R中处理文本注释的常见函数和方法。

0x01 text()函数

一、常见语法

text() 函数允许你在绘图的指定位置上添加文字注释。其常用语法如下:

text(x, y, labels, pos = NULL, ...)
  • x, y:文字显示的坐标。
  • labels:需要显示的文字内容。
  • pos:文字位置(相对于指定坐标的文字显示位置,1=下,2=左,3=上,4=右)。

二、在指定位置添加文字注释

# 简单绘图
plot(1:10, rnorm(10), main = "示例图")# 在指定位置添加文字注释
text(5, 0, labels = "中心位置", pos = 3, col = "blue")

三、公式添加

#简单绘图
x = c(1:10)
y = c(1,1.9,3.5,4.5,6.2,7.5,9.2,10.5,11.3,12.3)
plot(x,y)
model <- lm(y~x)
abline(model,lty = 2)#公式添加
a <- round(model[[1]][1],2)
b <- round(model[[1]][2],2)
text(6,4,paste("y=",a,"+",b,"x"))

0x02 mtext() 函数

mtext() 函数可以在图的边缘(边界)添加注释文本,适用于在图形的外部添加说明文字。

# 创建一个空白图形
plot(1:10, rnorm(10), main = "边缘注释示例")# 在图形的上方添加注释
mtext("这是图形上方的注释", side = 3, line = 2, col = "red")
#side 参数:用于指定文本的位置,1=下,2=左,3=上,4=右。

0x03 title() 函数

title() 函数允许你为图形添加标题、x轴标题、y轴标题及副标题。

# 创建散点图
plot(1:10, rnorm(10))# 添加标题和副标题
title(main = "主标题", sub = "副标题", xlab = "X轴标题", ylab = "Y轴标题")

0x04 legend() 函数

legend() 用于为图例添加注释,是在图中解释数据点或图形内容的重要工具。

# 绘制两组数据
plot(1:10, rnorm(10), col = "blue", pch = 16)
points(1:10, rnorm(10, 1), col = "red", pch = 17)# 添加图例
legend("topright", legend = c("组1", "组2"), col = c("blue", "red"), pch = c(16, 17))

0x05 使用ggplot2包

一、基本的geom_text() 和geom_label()用法

1、为每个点添加标签

geom_text() 是最常用的文本注释函数,用于在图形中的每个数据点上显示文本。

library(ggplot2)# 创建散点图并为每个点添加标签
p <- ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +#在图中的每个点上添加了 mtcars 数据集的行名作为标签。vjust 控制文本的垂直位置,color 控制文本颜色。geom_text(aes(label = rownames(mtcars)), vjust = 1.5, color = "blue")print(p)

2、为点添加标签框

geom_label()geom_text() 类似,区别在于它可以为文本添加一个背景框(标签框),使得文本在一些复杂背景的图中更加显眼。

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +#每个点上的文本被一个绿色标签框包裹,使其更突出。geom_label(aes(label = rownames(mtcars)), fill = "lightgreen", color = "black")print(p)

3、根据条件添加文本

你可以使用条件语句为特定的数据点添加文本。ifelse() 函数可以用来选择性地显示文本。

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +#只有当 mpg > 25 时,才会显示相应的标签,其他点不显示标签。geom_text(aes(label = ifelse(mpg > 25, rownames(mtcars), "")), vjust = 1.5, color = "red")print(p)

4、自定义文本样式

geom_text()geom_label() 支持多种样式选项,如文本大小、字体、角度、透明度等。

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +#文本大小设置为4,字体类型为 serif,并且旋转了45度,使文本更加美观和特殊。geom_text(aes(label = rownames(mtcars)), size = 4, angle = 45, family = "serif", color = "purple")print(p)

二、使用 annotate() 函数

annotate() 函数可以直接在图中某个特定的位置添加文本或其他注释,而不需要依赖数据集中的变量。它常用于手动标记图中的关键区域或点。

1、在特定位置添加注释文本

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +#annotate() 函数在 x=3, y=30 的位置添加了自定义文本"高效能车辆"。annotate("text", x = 3, y = 30, label = "高效能车辆", color = "blue", size = 5)print(p)

2、区域边缘文本添加

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +#x = -Inf 和 y = Inf 表示将文本放置在图的左上角。#hjust:水平对齐,通常取值为 0 (左对齐)、0.5 (居中对齐) 和 1 (右对齐)。#vjust:垂直对齐,通常取值为 0 (下对齐)、0.5 (居中对齐) 和 1 (上对齐)。annotate("text",x = -Inf,y = Inf,hjust = -0.2,vjust = 2,label = "Upper left")print(p)

3、 添加其他图形元素

annotate() 不仅可以添加文本,还可以添加其他几何图形,如箭头、矩形、圆等,以便标记或高亮特定的图形区域。

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +annotate("rect", xmin = 3, xmax = 4, ymin = 15, ymax = 25, alpha = 0.2, fill = "yellow") +annotate("segment", x = 5, xend = 4.5, y = 30, yend = 22, color = "red", arrow = arrow()) +annotate("segment",x = 2.5,xend = 3.5,y = 30,yend = 30,arrow = arrow(ends = "both",angle = 60,length = unit(0.5,"cm")))print(p)

4、直线、斜线、线段的添加

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +#在 y = 20 位置添加一条水平线,在 x = 4 位置添加一条垂直线。geom_hline(yintercept = 20) + geom_vline(xintercept = 4) +#添加一条通过截距为10,斜率为2的对角线(即 y = 10 + 2*x)geom_abline(intercept = 10,slope = 2) + #添加一个从 (2.5, 12.5) 到 (4.5, 12.5) 的水平线段annotate("segment",x = 2.5,xend = 4.5,y = 12.5,yend = 12.5)
print(p)

5、阴影部分添加

p <- ggplot(climate, aes(x = Year, y = Anomaly10y)) +geom_line() +## 添加一个矩形区域,从1940年到1970年之间,y值从-1到1,半透明且填充为浅蓝色annotate("rect",xmin = 1940,xmax = 1970,ymin = -1,ymax = 1,alpha = 0.5,fill = "lightblue")
print(p)

6、动态调整文本颜色和大小

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +#根据 mpg 值动态调整文本颜色和大小,mpg 较大的数据点对应的文本将更大且颜色不同。geom_text(aes(label = rownames(mtcars), color = mpg, size = mpg))print(p)

三、使用 ggrepel包:防止文本重叠

ggrepel 包是对 ggplot2 包的一个扩展,旨在解决 ggplot2 中文本标签重叠的问题。它和 ggplot2 包紧密相关,专门用于提升 ggplot2 的文本注释功能,特别是在复杂的可视化场景中,避免文本重叠,从而使标签更容易阅读和解释。

在数据点较多或文本注释较密集时,文本标签可能会重叠。ggrepel 包提供了 geom_text_repel()geom_label_repel() 会自动调整标签的位置,避免重叠,并保持文本与数据点的连接。

library(ggrepel)p <- ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +#geom_text_repel() 自动调整文本位置,避免文本重叠,使图形更加清晰。geom_text_repel(aes(label = rownames(mtcars)))print(p)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应急实战(10):Linux后门帐号

目录 1. Prepare 1.1 部署安全设备 2. Detect 2.1 设备产生告警 3. Contain 4. Eradicate 4.1 删除后门帐号 4.2 加固弱口令帐号 5. Recover 5.1 恢复帐号登录 6. Follow-Up 6.1 修改登录端口 6.2 开启命令记录 1. Prepare 1.1 部署安全设备 部署主机安全产品&#xff1a;牧云H…

自定义多级联动选择器指南(uni-app)

多端支持&#xff1a;可以运行在H5、APP、微信小程序还是支付宝小程序&#xff0c;都可以轻松使用改组件。自定义配置&#xff1a;您可以根据需要配置选择器的级数&#xff0c;使其适应不同的数据结构和用例。无限级联&#xff1a;此组件支持无限级联选择&#xff0c;使您能够创…

类和对象(完结)

文章目录 一对构造函数的补充1初始化链表2必须在初始化链表定义的情况3对于在类中成员变量初始化的总结4总结二类型转换1格式2规则三static成员1规则四友元1定义2 两种例子五匿名对象1格式2特殊情况 一对构造函数的补充 1初始化链表 结构&#xff1a;类名&#xff08;参数&…

网络服务--例行工作

1、单一例行工作--at 1.1、at命令工作过程 /etc/at.allow,写可以使用at的名单--白名单 /etc/at.deny,黑名单 如果两个文件都不存在&#xff0c;只有root有权限使用 #at工作调度对应的系统服务 [rootlocalhost ~]# ps -ef | grep at [rootlocalhost ~]# systemctl status a…

数字化转型:解决项目管理困境的新路径

在当今这个飞速发展的数字化时代&#xff0c;企业如同在汹涌波涛中航行的船只&#xff0c;承受着前所未有的变革压力。而作为企业运作核心环节之一的项目管理&#xff0c;同样面临着巨大的挑战。 传统项目管理模式中的种种问题&#xff0c;犹如顽固的礁石&#xff0c;阻碍着项目…

Shiro认证 -- (Authentication)

Apache Shiro是一个功能强大的Java安全框架&#xff0c;提供了身份验证&#xff08;Authentication&#xff09;、授权&#xff08;Authorization&#xff09;、加密&#xff08;Cryptography&#xff09;、会话管理&#xff08;Session Management&#xff09;、与Web集成、缓…

JavaScript 第16章:错误处理与调试

在软件开发中&#xff0c;错误处理与调试是非常重要的环节&#xff0c;它能够帮助开发者及时发现并修复代码中的问题&#xff0c;确保程序的稳定运行。下面我们将探讨JavaScript中的错误处理机制&#xff0c;以及如何使用现代浏览器提供的调试工具来进行调试。 1. 错误对象&am…

Linux执行source /etc/profile命令报错:权限不够问(已解决)

1.问题 明明以root账号登录Linux系统&#xff0c;在终端执行命令source /etc/profile时 显示权限不够 如下图&#xff1a; 2.问题原因 可能在编辑 /etc/profile 这个文件时不小心把开头的 井号 ‘#’ 给删除了 如图&#xff1a; 这里一定要有# 3.解决办法 进入/etc/pro…

扫雷(C 语言)

目录 一、游戏设计分析二、各个步骤的代码实现1. 游戏菜单界面的实现2. 游戏初始化3. 开始扫雷 三、完整代码四、总结 一、游戏设计分析 本次设计的扫雷游戏是展示一个 9 * 9 的棋盘&#xff0c;然后输入坐标进行判断&#xff0c;若是雷&#xff0c;则游戏结束&#xff0c;否则…

字节内部整理的软件测试面试题(含文档)

常见的面试题汇总 1、你做了几年的测试、自动化测试&#xff0c;说一下 selenium 的原理是什么&#xff1f; 我做了五年的测试&#xff0c;1年的自动化测试&#xff1b; selenium 它是用 http 协议来连接 webdriver &#xff0c;客户端可以使用 Java 或者 Python 各种编程语言…

搜维尔科技:力反馈五指灵巧手数据手套解决方案

力反馈五指灵巧手数据手套解决方案 搜维尔科技&#xff1a;力反馈五指灵巧手数据手套解决方案

【网络安全】未加密的F5 BIG-IP Cookie存在严重漏洞将被攻击者利用

文章目录 未加密的F5 BIG-IP Cookie存在严重漏洞将被攻击者利用F5 会话 Cookie推荐阅读 未加密的F5 BIG-IP Cookie存在严重漏洞将被攻击者利用 网络安全和基础设施安全局发布最新警告称&#xff0c;已观察到威胁行为者滥用未加密的持久性F5 BIG-IP Cookie来识别并针对目标网络…

Mybatis核心配置文件的详解

MyBatis 中的 environments&#xff1a; <environments default"mybatisDB">environments 标签&#xff1a;这个标签用于定义多个数据库环境&#xff0c;通常用于在不同环境&#xff08;如开发、测试、生产等&#xff09;下切换数据库连接。default 属性&…

电能质量的危害主要是哪些?我们该如何应对电能质量故障所带来的损失?

电能质量治理在现代配电系统中的必要性日益凸显。随着可再生能源和智能电网技术的广泛应用&#xff0c;电力系统面临着频率波动、谐波污染和电压不稳定等问题。这些问题不仅影响了电力的可靠性和安全性&#xff0c;还可能导致设备损坏和能效降低。因此&#xff0c;实施电能质量…

算法训练(leetcode)二刷第一天 | 704. 二分查找、27. 移除元素、977. 有序数组的平方

刷题记录 704. 二分查找27. 移除元素977. 有序数组的平方思路1思路二 704. 二分查找 leetcode题目地址 经典二分查找思路&#xff0c;有序列表左右边界向中间夹逼。 时间复杂度&#xff1a; O ( l o g n ) O(logn) O(logn) 空间复杂度&#xff1a; O ( 1 ) O(1) O(1) // …

Pagehelper获取total错误

前言 在使用若依框架的pagehelper时&#xff0c;给分页表设置数据的时候前端只收到了分页的那一页的数据&#xff0c;总记录数不符合要求 我想要的效果如下&#xff0c;可以实现分页&#xff0c;和显示总记录数 但是实际情况为 但是我的数据库有11条记录&#xff0c;他这里明…

QCY开放式耳机值得买吗?南卡、QCY、韶音开放式耳机最全测评!

​开放式耳机最近还挺火的&#xff0c;因为相对于传统的入耳式耳机来说&#xff0c;它佩戴起来更舒适&#xff0c;也更卫生&#xff0c;更加适配运动场景&#xff0c;现在不少的健身或者运动博主都选择了开放式耳机&#xff0c;那么作为一个同样喜欢跑步的数码博主&#xff0c;…

开源一个C缓存库

1 简介 在当下的视频点播应用场景下&#xff0c;端侧对视频缓存的需求可谓刚需&#xff0c;一方面可以为公司节省流量成本&#xff0c;一方面也可以提升用户的播放体验&#xff0c;有一石二鸟之效。 近期&#xff0c;本人用C写了一个缓存库&#xff0c;支持iOS/Android/harmony…

java项目之信息化在线教学平台的设计与实现(源码+文档)

项目简介 信息化在线教学平台的设计与实现实现了以下功能&#xff1a; 信息化在线教学平台的设计与实现的主要使用者管理员功能有个人中心&#xff0c;学生信息管理&#xff0c;教师信息管理&#xff0c;教学信息管理&#xff0c;学生成绩管理&#xff0c;留言板管理&#xf…

番外篇 | 史上最全的关于CV的一些经典注意力机制代码汇总

前言:Hello大家好,我是小哥谈。注意力是人类认知系统的核心部分,它允许我们在各种感官输入中筛选和专注于特定信息。这一能力帮助我们处理海量的信息,关注重要的事物,而不会被次要的事物淹没。受到人类认知系统的启发,计算机科学家开发了注意力机制,这种机制模仿人类的这…