在x轴上对数据进行排序,将一个变量作为参考

时间:2013-11-15 20:00:13

标签: r sorting ggplot2

你好我认为这一定是愚蠢的事,但我被卡住了..

我有5个参与者和2个任务

participant<-1:5
scoreA<- c(20, 18, 19, 15,16)
scoreB<- c(4, 2, 6, 1,3)

我创建了一个数据框,我使用变量scoreA作为参考

对其进行排序
total<- data.frame(scoreA, scoreB, participant)
total <- total[order(total[,1]),]

因为我想使用ggplot创建图形线,所以我将数据融化并尝试绘制图形:

totalM <- melt(total, id="participant", measured= c("scoreA", scoreB))
ggplot(totalM, aes(participant, value, shape= variable, linetype=variable))+geom_point(size=5)+geom_line(size=1)

我不明白为什么我没有在图表中看到使用变量scoreA作为参考排序的数据。任何的想法?我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

你想要这样的东西吗?

enter image description here

# Convert participant to a factor, with order given by the scoreA variable
# from your "total" data frame
totalM$participant <- factor(totalM$participant,
                             levels=arrange(total, scoreA)$participant)

# Plot!
ggplot(totalM, aes(participant, value, shape= variable, linetype=variable)) +
  geom_point(size=5)+
  geom_line(aes(x=as.numeric(participant)), size=1)
# Note the last geom, I modified the aes

基本上,我将participant变量设为一个因子,按scoreA排序。然后ggplot将以给定的因子顺序绘制participant变量。我必须进行一点调整才能强制ggplot绘制线条,以获取participant geom_line变量的因子的数值。

这是我想到的第一件事。也许有更好的方法来做到这一点?