如何在r中包含分段geom_smooth的标签?

2023-12-11

我想标记我的geom_smooth在 r 中,但标签更接近实际点,而不是线。

Data:

df <- structure(list(t = c(45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 
47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 50, 
50, 50, 50, 50, 51, 51, 51, 51, 51, 52, 52, 52, 52, 52, 53, 53, 
53, 53, 53, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 56, 56, 56, 
56, 56, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 59, 59, 59, 59, 
59, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 
63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65), 
    x = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), name = c("P1", "P2", 
    "P2+", "P3", "P4", "P1", "P2", "P2+", "P3", "P4", "P1", "P2", 
    "P2+", "P3", "P4", "P1", "P2", "P2+", "P3", "P4", "P1", "P2", 
    "P2+", "P3", "P4", "P1", "P2", "P2+", "P3", "P4", "P1", "P2", 
    "P2+", "P3", "P4", "P1", "P2", "P2+", "P3", "P4", "P1", "P2", 
    "P2+", "P3", "P4", "P1", "P2", "P2+", "P3", "P4", "P1", "P2", 
    "P2+", "P3", "P4", "P1", "P2", "P2+", "P3", "P4", "P1", "P2", 
    "P2+", "P3", "P4", "P1", "P2", "P2+", "P3", "P4", "P1", "P2", 
    "P2+", "P3", "P4", "P1", "P2", "P2+", "P3", "P4", "P1", "P2", 
    "P2+", "P3", "P4", "P1", "P2", "P2+", "P3", "P4", "P1", "P2", 
    "P2+", "P3", "P4", "P1", "P2", "P2+", "P3", "P4", "P1", "P2", 
    "P2+", "P3", "P4"), value = c(48L, 132L, 111L, 115L, 2L, 
    58L, 126L, 82L, 74L, 0L, 45L, 119L, 78L, 87L, 0L, 56L, 106L, 
    105L, 88L, 1L, 52L, 78L, 91L, 107L, 1L, 35L, 96L, 86L, 98L, 
    1L, 61L, 118L, 90L, 108L, 2L, 45L, 114L, 93L, 98L, 2L, 55L, 
    108L, 78L, 76L, 7L, 44L, 97L, 94L, 96L, 0L, 40L, 111L, 93L, 
    88L, 1L, 43L, 78L, 66L, 113L, 2L, 20L, 57L, 84L, 41L, 0L, 
    17L, 51L, 81L, 34L, 0L, 40L, 55L, 64L, 32L, 0L, 25L, 67L, 
    71L, 37L, 0L, 16L, 67L, 60L, 57L, 0L, 23L, 46L, 62L, 47L, 
    1L, 34L, 75L, 68L, 39L, 0L, 34L, 60L, 85L, 24L, 0L, 20L, 
    58L, 63L, 37L, 1L)), row.names = c(NA, -105L), class = c("tbl_df", 
"tbl", "data.frame"))

My code:

df %>% 
  group_by(name) %>% 
  # New column to label the first and last values
  mutate(label =
           case_when(
             t == min(t) | t == max(t) ~ name,
             TRUE ~ NA_character_)) %>% 
  ggplot(aes(x = t, y = value, color = name, group = interaction(x, name), shape = name)) +
  geom_smooth(se = F) +
  geom_vline(xintercept = 57, linetype = "dashed", lwd = 0.3) + 
  scale_color_discrete(guide = 'none') +
  geom_label_repel(aes(label = label))

My graph: enter image description here

另外,是否可以去掉指向平滑黄土曲线的线?


实现您想要的结果的一种选择是使用stat="smooth" in ggrepel::geom_label_repel。这样做会将标签放在拟合点上,而不是数据点上。但是,要完成这项工作,您必须在内部动态添加标签geom_label_repel使用例如after_stat(ifelse(x %in% range(x), color, NA_character_)):

library(ggplot2)
library(ggrepel)

ggplot(df, aes(x = t, y = value, color = name, group = interaction(x, name), shape = name)) +
  geom_smooth(se = F) +
  geom_vline(xintercept = 57, linetype = "dashed", lwd = 0.3) +
  scale_color_discrete(guide = "none") +
  ggrepel::geom_label_repel(aes(label = after_stat(ifelse(x %in% range(x), color, NA_character_))), stat = "smooth")

EDIT可能有不同的路线将标签放置在数据范围的左(右)(下)上端。我的方法可能并不优雅。但是,在我最近不得不准备大量在端点处带有标签的图表之后,我决定通过两个文本层来实现这一点,在我看来,这是实现这一目标的最简单方法,因为它允许我们轻推将标签向左移动或对。为了完成这项工作,我增加了 x 比例的扩展,为标签腾出空间。另外,我删除了编辑和设置中的片段.direction = "y"这样标签仅在 y 方向上被排斥。

library(ggplot2)
library(ggrepel)

ggplot(df, aes(x = t, y = value, color = name, group = interaction(x, name), shape = name)) +
  geom_smooth(se = F) +
  geom_vline(xintercept = 57, linetype = "dashed", lwd = 0.3) +
  scale_color_discrete(guide = "none") +
  scale_x_continuous(expand = c(.1, .1)) +
  ggrepel::geom_label_repel(aes(label = after_stat(ifelse(x %in% range(x)[1], color, NA_character_))), 
                            stat = "smooth",
                            nudge_x = -1,
                            min.segment.length = Inf,
                            direction = "y") +
  ggrepel::geom_label_repel(aes(label = after_stat(ifelse(x %in% range(x)[2], color, NA_character_))), 
                            stat = "smooth",
                            nudge_x = 1,
                            min.segment.length = Inf,
                            direction = "y")

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在r中包含分段geom_smooth的标签? 的相关文章

  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • twitterR 和 ROAuth R 软件包安装

    我在安装 CRAN 上的 twitteR 和 RAOuth 软件包时遇到一些问题 我尝试了几种不同的方法 在 Windows 下使用源代码 在 Ubuntu 下使用 RStudio 我尝试了以下命令 sudo apt get install
  • 使用 R 选择第一个非 NA 值

    df lt data frame ID c 1 1 1 2 3 3 3 test c NA 5 5 6 4 NA 7 3 NA 10 9 我想创建一个名为 value 的变量 它是每个单独 ID 测试的第一个非 NA 值 对于只有NA的个体
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • 如何从 R keras 中的类似生成器的数据中评估()和预测()

    我有以下代码 数据集可以下载here https www dropbox com s qjt5o31oyqj10m8 data tar gz dl 0 or here https www kaggle com c dogs vs cats
  • 如何获得所有大于x且有位置的数字?

    V lt c 1 3 2 4 2 3 1 X lt 3 pos lt V V X pos is 3 3 我需要的是所有 3 个的位置 I need 2 and 6 哪些职位是3 in V Use which pos lt which V 3
  • 计算 R 中各列的唯一值

    我正在尝试创建一个新变量 其中包含来自两个不同列的字符串值的唯一计数 所以我有这样的东西 例如 A tibble 4 x 2 names partners
  • 如何在 R 或 Python 中制作旭日图?

    到目前为止 我一直无法找到一个可以创建旭日图的 R 库约翰 斯塔斯科 http www cc gatech edu gvu ii sunburst 有人知道如何在 R 或 Python 中实现这一点吗 在极坐标投影中使用 matplotli
  • 如何在 R 中匹配多个 ggplot2 图中的调色板?

    自从被问到这个问题以来已经有一段时间了 但我知道一个事实 我很快就会提取新数据 我想弄清楚如何用这种技术来绘制它 看起来评论和答案中的人知道如何做到这一点 但我无法完全弄清楚所给我的内容 还有人想尝试一下吗 我正在尝试使用具有多个级别的因子
  • ggplot2:如何标记事件发生的日期

    我想从第二个情节中获取第一个情节的信息 第二张图表示事件发生的天数 它看起来更宽 因为它没有图例 但它是相同的时间尺度 我选择在第一个图中手动分配颜色 I would like to overlay the second plot dots
  • R 中用于调用 sed、rsync、ssh 等的 system() 的替代方案:函数是否存在,我应该编写自己的函数,还是我错过了重点?

    最近 我发现了base files命令 与其他命令一起使用 例如getwd write lines file show dir等等 似乎有许多 bash 函数的 R 等价物 我还在 R 中编写了一些函数来简化对ssh and rsync通过
  • 投资决策:R中的NPV、IRR、PB计算

    我正在尝试计算不同数量项目的净现值 NPV 内部收益率 IRR 和投资回收期 PB 时间 以评估哪个投资项目提供最佳回报 到目前为止 我可以为每个项目单独计算几行代码 但我想做的是 编写一个函数 它接受一个包含许多不同项目及其现金流的矩阵
  • R“错误:“}”中出现意外的“}”[重复]

    这个问题在这里已经有答案了 我有一个字符串变量 对于缺少数据的情况 它具有 空值 我想将 空值 重新编码为缺失 而不是说 空值 我正在尝试编写一个循环来删除这些 空值 条目 但我不断收到错误 错误 中出现意外的 for row in dat
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • 使用 template.docx 从 Shiny App 编织 Word 文档

    我正在尝试使用 template docx 文件从闪亮的应用程序编写一个 Word 文档 我收到以下错误消息 pandoc exe template docx openBinaryFile 不存在 没有这样的文件或目录 以下 3 个文件当前
  • 实三次多项式的最快数值解?

    R 问题 寻找最快的方法来数值求解一堆已知具有实系数和三个实根的任意三次方程 据报道 R 中的 polyroot 函数对复杂多项式使用 Jenkins Traub 算法 419 但对于实多项式 作者参考了他们早期的工作 对于实三次或更一般的
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • 如何修复 R 中 Kaplan Meier 图的风险表计算错误

    以下是一个数据帧 其中 6 个参与者中的每一个都有唯一的 record ID 我想绘制一个生存分析图 其中包含感兴趣事件的复发以及在时间间隔 tstart 到 tstop 内 暴露 药物剂量 数值变量 的时间依赖性协变量 每个参与者的最大

随机推荐

  • 获取活动 udp 连接的目标 IP/端口?

    我可以使用 iphlpapi 检索活动的 TCP 和 UDP 连接 TCP 连接显示源信息 ip 端口 目标信息 ip 端口 状态和进程 ID 但对于 UDP 连接 它不提供远程 IP 和端口 这就是我想要得到的 在 Delphi 或 C
  • 如何从现有证书 (abc.crt) 和 abc.key 文件创建密钥库?

    我正在尝试将证书和密钥文件导入密钥库 但我无法执行此操作 如何通过导入现有证书 abc crt 和 abc key 文件来创建密钥库 最简单的可能是使用 OpenSSL 创建 PKCS 12 文件 openssl pkcs12 export
  • 限制对某些用户取消隐藏选项卡

    我知道谷歌电子表格中的保护工作表 范围功能 但我想做的是对某些用户完全隐藏工作表 我用下面的代码找到了这个问题的答案 我能够在打开电子表格时自动向指定用户隐藏某些选项卡 工作表 但这并不能阻止他们再次取消隐藏选项卡 工作表 有什么建议可以限
  • 访问已安装应用程序的列表

    我需要获取 Windows Phone 已安装的应用程序 你知道这个可以从 SDK 中获得吗 我认为通过法律途径是不可能的 每个应用程序都位于其沙箱中 无法访问父文件夹或其他应用程序
  • 如何修复 COMException 错误 80040154?

    将工作的 C 项目从 64 位 Windows 7 计算机移动到 32 位 XP 计算机会导致以下错误 Retrieving the COM class factory for component with CLSID 681EF637 F
  • 在 bash 中的 if 字符串内转义方括号

    我正在尝试做一个简单的if语句 但其中一个字符串包含方括号 我尝试过 一切都在我的脑海中浮现 我基本上是这样的 if MESSAGE username USERNAME is already taken 在这种情况下 我想抛出一条错误消息
  • 将行移至表格顶部

    我想知道是否可以将表格的一行从底部移动到顶部 当我使用到目前为止的代码时 dt nrow dt 1 lt rbind c 1X 1X 1X 1X 1X 1X 1X 1X 1X 1X 1X 1X 1X 1X 1X 1X 2X 6X 3X dt
  • 从 SQLite 数据库检索数据时出现错误

    I have created database by using SQLite Database browser I have to follow this example 数据库的名称是 笑话数据库 sql 其中有一张桌子jokes我将其
  • 使用嵌套 for 循环用 1 和 0 绘制棋盘

    我只是使用普通的 python 来用交替的 1 和 0 制作棋盘网格 我知道我可以使用带有模数运算符的嵌套 for 循环 但我不知道如何处理 for 循环内的模数 def print board board for i in range l
  • Atom 编辑器:用于插入时间戳的片段

    下面是我正在玩的 Atom 片段 我想要做的是在末尾插入带有开发人员姓名的时间戳 当多个人正在处理同一代码库并且您需要注释掉某些代码或添加注释时 这非常有用 这样其他开发人员就知道谁做了什么以及何时做的 我发现它非常有用 并想创建一个片段来
  • jqgrid - 在 IE8 中双击一行选择该行

    当我双击一行时 它在 IE8 中选择该行 但在 FF 和 Chrome 中则不然 这是 IE8 的问题还是有 bug 谢谢 这种行为是众所周知的 例如 您可以在文档中阅读以下内容jQuery dblclick 触发事件的顺序因浏览器而异 有
  • 为什么我的脚本在使用“w”打开文件并在写入之前删除内容后仅写入 1 行?

    我的目录中有一个名为 fName txt 的文件 运行以下 Python 代码片段将通过执行循环 包含代码片段 三次 将 6 个数字添加到文本文件中 分为 3 行和 2 列 但是 我想在将新数据写入其中之前完全清空该文件 否则多次运行脚本将
  • 在 flutter 中调整旋转容器的大小

    我有以下代码 import package flutter material dart import package flutter rendering dart import package vector math vector math
  • MySQL 到 PostgreSQL:如何修改此 SQL 查询?

    我有这个 MySQL 查询 它利用MONTH and YEAR SELECT MONTH created at AS month YEAR created at AS year FROM users GROUP BY MONTH creat
  • SwiftyJSON - 'inout JSON' 无法转换为 'JSON'

    我面临 JSON 解析问题 我不知道如何解决 我需要这部分 JSON 数据 columns created at DESC id DESC 要存储在 String String 可选字典 所以 这是我正在使用的代码 self columns
  • 使用python win32向excel添加注释

    我正在尝试使用 win32 使用 python 添加新注释到 excel import win32com client as win32 excel win32 gencache EnsureDispatch Excel Applicati
  • 在 JavaScript 中制作反向数组的独立副本

    这是我的小提琴 http jsfiddle net sepoto Zgu9J 1 我从一个反向函数开始 function reverseArr input var ret new Array for var i input length 1
  • 如何在IE6和7中设置CSS最大宽度?

    我在我的网站中使用这个CSS代码 img max height 800px max width 600px 不幸的是 它不适用于 IE 6 和 7 我该如何解决 提前致谢 IE7 支持 max height 属性 http www w3sc
  • 仅当设置了变量时才将键值对添加到数组

    我将键值对添加到我的数组中 如下所示 array key1 gt value1 key2 gt value2 我想添加另一个键foo 仅当变量 bar is set array key1 gt value1 key2 gt value2 f
  • 如何在r中包含分段geom_smooth的标签?

    我想标记我的geom smooth在 r 中 但标签更接近实际点 而不是线 Data df lt structure list t c 45 45 45 45 45 46 46 46 46 46 47 47 47 47 47 48 48 4