首页 > 解决方案 > 如何制作一个图,显示代表年龄的两个时间点(基线和后续)由一条线连接的点(意大利面条图)?

问题描述

R studio(ggplot)问题:我需要在 X 轴上准备一个带有年龄的图,每个主题用一个点表示每个会话(基线和后续),并在它们之间画一条线(意大利面条图)。最好在基线时按年龄对它们进行排序..有人可以帮助我吗?

我想沿 x 轴水平绘制线(从时间点 1 的年龄到 AgeTp2),y 轴可以表示基于基于 AgeTp1 的个人排序列表的一些索引(所以只是一堆水平线,真的)

数据集的图像

标签: r

解决方案


这是一个简单的示例,您可以根据自己的目的进行修改...

df <- data.frame(ID=c("A","A","B","B","C","C"),
                 age=c(20,25,22,27,21,28))

library(dplyr)
library(ggplot2)

#sort by first age for each ID
df <- df %>% group_by(ID) %>% 
  mutate(index=min(age)) %>% 
  ungroup() %>% 
  mutate(index=rank(index))

ggplot(df,aes(x=age,y=index,colour=ID,group=ID))+
  geom_point(size=4)+
  geom_line(size=1)

在此处输入图像描述


推荐阅读