【问题标题】:Grouped data by factor with geom_segment使用 geom_segment 按因子分组数据
【发布时间】:2016-02-10 18:17:00
【问题描述】:

我想使用 geom_segment 按因子组显示细分集群,但 position 参数似乎没有做任何事情。这是一个例子:

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)

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

【问题讨论】:

  • This 可能是重复的。如果您需要比该问题提供的更多指导,我可以举一个具体的例子......
  • 另外,您需要在aes 之外设置位置,例如position = position_dodge(.2)
  • @joran 感谢您指出那个。不知道为什么这没有出现在我的搜索中。我会看看它,以确定它是否与我/其他人实际使用的那种解决方案有关。
  • 具体来说,您需要使用coord_flip 执行geom_linerange 选项。
  • @alistaire position_dodge 沿 x 轴而不是 y 轴移动线段。

标签: r ggplot2


【解决方案1】:

我有点不确定@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()

结果:

【讨论】:

  • 是的,你沟通得很清楚。我还在努力。谢谢!
  • 出于好奇并帮助将这个答案背景化以供未来的烦恼用户使用:您知道 geom_segment 和 geom_linerange 之间的预期区别/用法吗?
  • @Nancy 对于特定用例,您可以将geom_linerange 视为geom_segment 的便捷版本。 geom_segment 用于当您需要以相当非系统的方式绘制任意线段时。 geom_linerange 是针对具有不同长度的指定 x 值的垂直条集合的特定情况(例如误差线等)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 2012-02-27
  • 1970-01-01
相关资源
最近更新 更多