首页 > 解决方案 > 如何锚定多条线的特定数据点,然后通过选定的点链接它们?

问题描述

我有一个如下所示的数据集,其中包含三个关键变量:ID、年份和值。然后,我使用 ggplot 运行如下图 (X = 1:nrow(df), Y = Value)。不同的组(即ID)有不同的数据点,例如ID=1的组有3个数据点。所以,每组可以有一条线。

我想知道是否有任何与 ggplot 相关的方法来帮助选择多行的特定数据点,然后使用所选的特定点链接它们?例如,如果选择每个组的第一个数据点,则 ID = 1 的 Value = 10 和 ID = 2 的 Value = 6 将被选中,然后可以通过选择的特定数据点链接和绘制这些组。

并且类似的场景也可以设置为选择每组的中间数据点或最后一个数据点。但与此同时,每组(线)的每个数据点都将保留并显示在该图上。非常感谢。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

标签: rggplot2

解决方案


也许这样可行:它创建一个变量来存储每组 ID 中的行/观察位置,然后使用该位置信号创建一个新组,该组将通过geom_path(). 为了帮助可视化,将 id 变量映射到形状(圆形、三角形、正方形)。

library(tidyverse)

df <- 
  tibble(id    =   c(1,1,1,2,2,2,3,3,3),
       year  = sample(x = 2010L:2020L, size = 9, replace = TRUE),
       value = sample(x = 1:20, size =  9, replace = TRUE)) %>% 
  arrange(id, year, -value)

df %>% group_by(id) %>% 
  mutate(row_position = row_number()) %>% 
  ungroup() %>% 
  ggplot(aes(x = year, y = value, group = row_position, colour = as.factor(row_position))) +
  geom_point(aes(shape = as.factor(id)), size = 3, alpha = 0.5) + 
  geom_path()

在此处输入图像描述


推荐阅读