我找不到有关如何执行此操作的示例。我正在尝试使用geom_line画线,但避开了重叠的元素,这似乎不起作用。

这是我的数据:

> sa
    id ep type grp variable value
 1:  1  1 typ1   1       st     1
 2:  1  2 typ1   2       st    60
 3:  1  3 typ1   3       st   120
 4:  1  1 typ2   4       st    20
 5:  1  2 typ2   5       st    60
 6:  2  1 typ1   6       st     1
 7:  2  2 typ1   7       st    80
 8:  2  3 typ1   8       st   170
 9:  2  1 typ2   9       st    10
10:  2  2 typ2  10       st    60
11:  2  3 typ2  11       st   120
12:  1  1 typ1   1       en    50
13:  1  2 typ1   2       en   100
14:  1  3 typ1   3       en   150
15:  1  1 typ2   4       en    40
16:  1  2 typ2   5       en   100
17:  2  1 typ1   6       en    40
18:  2  2 typ1   7       en   150
19:  2  3 typ1   8       en   200
20:  2  1 typ2   9       en    50
21:  2  2 typ2  10       en    90
22:  2  3 typ2  11       en   190

这是我的简单代码,试图避开typ1typ2的重叠值
 ggplot(sa,aes(x=value,y=id,group=grp,color=type)) + geom_line(size=6,position="dodge")

r - R ggplot2 geom_line位置闪避-LMLPHP

这就是我所看到的。如何避开重叠的条形?

最佳答案

我不认为您可以垂直躲避,但是另一种选择是添加一些自己的躲避功能。例如:

eps = 0.05

ggplot(sa, aes(x=value, y=ifelse(type=="typ1", id + eps, id - eps),
              group=grp, color=type)) +
  geom_line(size=6) +
  scale_y_continuous(breaks=1:2, limits=c(min(sa$id-eps), max(sa$id+eps)))

您必须试着躲避数量,轴限制等,以获得给定宽高比所需的外观。

r - R ggplot2 geom_line位置闪避-LMLPHP

09-12 01:19