对于我的研究,我试图根据我在一篇文献中找到的图表创建一个类似的图表:
我的实验涉及10首不同歌曲的流派标记。我保存了标签(人们用来单独描述的单词)。 x-asis应代表参与时间顺序的所有参与者。 y轴应表示在标签中使用单词的频率。请考虑以下示例数据:
df <- data.frame(tagid= numeric(0), participantid = numeric(0), tag = character(0))
newRow <-data.frame(tagid=1, participantid=1, tag = "triphop")
df <-rbind(df,newRow)
newRow <-data.frame(tagid=2, participantid=1, tag = "electronic")
df <-rbind(df,newRow)
newRow <-data.frame(tagid=3, participantid=2, tag = "mellow")
df <-rbind(df,newRow)
newRow <-data.frame(tagid=4, participantid=2, tag = "electronic")
df <-rbind(df,newRow)
newRow <-data.frame(tagid=5, participantid=3, tag = "electronic")
df <-rbind(df,newRow)
Tagid 1和2属于同一个参与者,并且应该具有相同的x坐标。 3和4属于参与者2,tagid 5属于参与者3。
对于这个数据集,我想绘制一个这样的图形(借口图):
y轴表示使用特定单词描述此乐曲的参与者的百分比。作为&#39; electronic&#39;所有三个参与者都使用它保持100%。 &#39; Triphop&#39;由参与者1使用,但参与者2和3没有使用,参与者3使用率从100%降至50%,降至33%。
答案 0 :(得分:0)
代码有点乱,但可能你想要这样的东西?您需要完成数据框,以便每个participantid
都包含所有三个标记级别的行。然后,通过标记级别和参与者累积总和的累积总和,您可以获得该比例。
df %>%
group_by(participantid, tag) %>%
summarise(n = n()) %>%
complete(tag, nesting(participantid), fill = list(n = 0)) %>%
group_by(tag) %>%
mutate(absolute = cumsum(n)) %>%
ungroup() %>%
mutate(id = rep(1:3, each = length(levels(tag)))) %>%
mutate(proportion = ifelse(absolute / id != 0, absolute / id, NA)) %>%
ggplot(aes(x = participantid, y = proportion, color = tag)) + geom_line(lwd = 1)