使用 geom_segment 按因子对数据进行分组

Nan*_*ncy 3 r ggplot2

我想使用因子组显示段集群,geom_segmentposition参数似乎没有做任何事情。下面是一个例子:

mydata = data.frame(variable = factor(c("A","A","A","B","C")),
                    color = factor(c(1,2,3,4,5)),
                    start = c(1,2,1,4,6),
                    end = c(3,4,6,5,8))

ggplot(mydata, aes(x = start, xend = end, y = variable, yend = variable)) + 
  geom_segment(aes(color = color, position = "stack"), size = 3)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我也试过了position = "dodge"。A 组应该有 3 个段,但它们都被绿色条覆盖了。调整透明度在视觉上会太混乱。如何确保每个因素的所有段并排显示?

jor*_*ran 7

我有点不确定@alistaire 和我是否清楚地向您传达了这一点,所以这就是我们的意思:

mydata = data.frame(variable = factor(c("A","A","A","B","C")),
                                        color = factor(c(1,2,3,4,5)),
                                        start = c(1,2,1,4,6),
                                        end = c(3,4,6,5,8))

ggplot(mydata, aes(ymin = start, ymax = end, x = variable)) + 
    geom_linerange(aes(color = color),position = position_dodge(width = 0.2), size = 3) + 
    coord_flip()
Run Code Online (Sandbox Code Playgroud)

结果是:

在此处输入图片说明

  • @Nancy 对于特定用例,您可以将 `geom_linerange` 视为一种方便的 `geom_segment` 版本。`geom_segment` 适用于需要以相当非系统的方式绘制任意线段的情况。`geom_linerange` 是针对具有不同长度(例如误差线等)的指定 x 值的竖线集合的特定情况。 (2认同)