ggplot2-多线图序列

时间:2017-03-04 13:49:33

标签: r ggplot2

我有一个大型数据集,其中个体随着时间的推移值增加并且状态为1或0.我可以为每个个体绘制一条线随着时间的推移而增加,根据它们是0还是1来着色。

我无法弄清楚如何将所有0都绘制在所有1的顶部,以便零没有任何1超过它们的顶部。

我已将它们分配到组,然后设置组顺序并尝试按组绘图,但这不起作用。

为了演示这个问题,我可以使用ChickWeight数据集。如果我使用下面的脚本进行绘图,那么灰色线条位于蓝色的顶部,我希望能够使用蓝色为小鸡1绘制它们,但蓝色线条位于灰色的顶部。

ggplot(ChickWeight, aes(x=Time, y=weight, colour=Chick))+
geom_point(aes(colour=Diet,shape=Diet),size=1.5)+
geom_line(aes(colour=Diet,group=Chick))+
scale_colour_manual(values=c('blue','grey','grey','grey'))

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用双重geom来控制绘图顺序:

ggplot(mapping = aes(x=Time, y=weight, colour=Diet, group=Chick, shape=Diet))+
    geom_line(data = ChickWeight[ChickWeight$Diet != '1', ])+
    geom_line(data = ChickWeight[ChickWeight$Diet == '1', ])+
    geom_point(size=1.5, data = ChickWeight[ChickWeight$Diet != '1', ])+
    geom_point(size=1.5, data = ChickWeight[ChickWeight$Diet == '1', ])+
    scale_colour_manual(values=c('blue','grey','grey','grey'))

enter image description here