ggplot2:为每个id创建不同的图形面板

时间:2018-02-26 14:42:39

标签: r ggplot2

我正在尝试为我的数据集中的每个人(ID)创建一个时间序列图。

示例数据:

ID <- rep(c(2:5), each = 9, times = 4)
Attitude <- rep(c('A1', 'A2','A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'), 16)
Answer <- rep(1:5, length.out = 144)
time <- as.character(rep(c(0, 1, 3, 4), each = 9, times = 4))
first_answer <- rep(1:5, length.out = 144)

df <- data.frame(ID, Attitude, Answer, time, first_answer)
df$time <- as.character(df$time)

我目前使用的功能代码:

library(dplyr) 
spaghetti_plot <- function(input, MV, item_level){
  MV <- enquo(MV)
  titles <- enquo(item_level)
  input %>% 
  filter(!!(MV) == item_level) %>% 
  mutate(first_answer = first_answer) %>%
  ggplot(.,aes( x = time, y = jitter(Answer), group = ID)) +
  geom_line(aes(colour = first_answer)) +
  labs(title = titles ,x = 'Time', y = 'Answer', colour = 'Answer given at time 0')
}

这给了我一个图表,其中每个人都有一条线,即所有个体的一个图(等于ID的数量)。而不是这个,我希望有#panels = ID的1个情节。例如,如果我有10个人的数据,我想有一个包含10个面板的图表。

我尝试使用facet_wrapfacet_panel来完成工作,但我还没有找到合适的解决方案。

使用facet_wrap(~ID)

编辑可获得enter image description here

我所追求的结果看起来像这样:enter image description here

最初是在SAS中制作的。

EDIT2 解决方案在评论中。

0 个答案:

没有答案