避免在ggplot中重叠线条

时间:2015-11-25 20:44:36

标签: r ggplot2

我希望ggplot中的线条并排绘制。 因此,当两组在y轴上具有相同数量的情况时,我希望两条线都可见。调整Alpha是我最后的选择。我宁愿让他们在另一个上面/下面画一个。有没有办法做到这一点?

这是一个例子: bad graph

我希望金色和红色都可见......

我的代码是基本的ggplot,geom_lines()没什么特别的。

require(ggplot2,quietly = T)
ggplot(tinnel_sum,aes(Czas,Tinnel,group=Grupa,color=Grupa))+
geom_line(aes(y=jitter(Tinnel)))+
ggtitle("Suma szczurów z pozytywnym objawem Tinella \n 
w każdej z grup, w zależności od czasu dla całej grupy")+
ylab("Liczba szczurów z pozytywnym objawem Tinella")+
theme_bw(base_size = 12)

y值只是一个值为0-12的整数,它是观察到的案例的总和。

就是这样。它非常直接。

不幸的是,抖动会给线条增加不必要的弯曲度,即使我将其设置为非常低的值0.01也应该是直线的。我认为可能有更好的解决方案。

enter image description here

2 个答案:

答案 0 :(得分:0)

我看到你的问题有两个可能的答案:

  1. 为每个组添加一个小偏移量,即向ESJ添加0.01,向ESJ + Fat添加0.02等等。但这会伪造您的结果,我不愿意这样做。
  2. 也可以通过线型区分
  3. 对于2.我刚刚在您的代码中添加了linetype=Grupa。如果您添加了样本数据,我可以显示结果。

    require(ggplot2,quietly = T)
    ggplot(tinnel_sum,aes(Czas,Tinnel,group=Grupa,color=Grupa,linetype=Grupa))+
    geom_line(aes(y=jitter(Tinnel)))+
    ggtitle("Suma szczurów z pozytywnym objawem Tinella \n 
    w każdej z grup, w zależności od czasu dla całej grupy")+
    ylab("Liczba szczurów z pozytywnym objawem Tinella")+
    theme_bw(base_size = 12)
    

    最后,这是关于可视化而不是关于编程。

答案 1 :(得分:0)

您可以在您的 geom_line 中添加position =“ stack”,以便所有行都可以堆叠在一起而不会重叠

ggplot(tinnel_sum,aes(Czas,Tinnel,group=Grupa,color=Grupa,linetype=Grupa))+
geom_line(aes(y=jitter(Tinnel)),position = "stack")+
ggtitle("Suma szczurów z pozytywnym objawem Tinella \n 
w każdej z grup, w zależności od czasu dla całej grupy")+
ylab("Liczba szczurów z pozytywnym objawem Tinella")+
theme_bw(base_size = 12)