r - 如何使用另一个变量对 geom_segment 中创建的箭头进行加权和标签

标签 r ggplot2 dplyr data-visualization geom-segment

考虑这个数据框:

data <- data.frame(ID = rep(1, 6),
                   Loc = c("A","B","D","A","D","B"),
                   TimeDiff = c(NA, 4.5,2.2,2.1,3.4,7.2))

我们在多个位置 (Loc) 的观测值具有相同的 ID。观测值按其发生的顺序排列,因此第一个观测值位于 Loc == A 处,第二个观测值位于 Loc == B 处,依此类推。 TimeDiff 是每个连续观察之间的时间段。我制作了下图来显示 Loc 之间随时间变化的“路径”:

library(tidyverse)
data%>%
  mutate(RowNumber = row_number(), xend = lead(Loc), yend = lead(RowNumber))%>%
  ggplot()+
  geom_segment(aes(x = Loc, y = RowNumber, xend = xend, yend = yend), arrow = arrow(), size = 2)

enter image description here

我的主要问题:我们如何根据变量 TimeDiff 来衡量每个箭头的大小,以及如何使用 TimeDiff 的相应值来标记每个箭头?这意味着连接前 2 个观测值(其中 Loc == ALoc == B)的箭头将比后面的箭头更粗,因为存在更大的 TimeDiff (4.2) 两个观察结果之间的关系。

一个附带问题: 请注意,Loc 的 3 个级别包括 ABD。假设我想将另一个级别 C 包含在 BD 之间的图中。这怎么能扔进去呢?

最佳答案

这是一个可能的解决方案,稍微修改了数据。 缺点是硬编码 nudge_xnudge_y:

# modified data NA replaced by 0 and last value replaced by NA as we only have 5 differences in 6 datapoints

data <- data.frame(ID = rep(1, 6),
                   Loc = c("A","B","D","A","D","B"),
                   TimeDiff = c(0, 4.5,2.2,2.1,3.4,NA))

library(tidyverse)
data%>%
    mutate(RowNumber = row_number(), xend = lead(Loc), yend = lead(RowNumber))%>%
    ggplot()+
    geom_segment(aes(x = Loc, y = RowNumber, xend = xend, yend = yend), 
                 arrow = arrow(), size = data$TimeDiff) +
    geom_label(aes(x = Loc, y = RowNumber, xend = xend, yend = yend, label = data$TimeDiff),
               nudge_x = c(0.3, 0.5, -1, 1, -0.7),
               nudge_y = seq(0.2,6, 0.1))

enter image description here

关于r - 如何使用另一个变量对 geom_segment 中创建的箭头进行加权和标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69260781/

相关文章:

r - 查找数据中连续递减值的行数

r - Purrr 和映射向量输出函数

python - 非均匀间隔时间序列的季节性分解,R 或 Python 中任何完善的算法?

R (data.table) : Fast counts of value matches in multiple column

mysql - dbConnect-R中的清理数据是否会改变真实数据库中的数据值

R - 如何将一个函数作为参数传递给另一个函数?

r - R中的更多靶心绘图

r - 计算自上次事件以来耗时

regex - 在两个可能的分隔符之一之前查找单词

r - ggplot 保留组合图的重复颜色