当 x 是分类时,在 geom_segment 中调整 yend

Adjust yend in geom_segment when x is categorical

当 x 是绝对值时,我想调整 geom_segment 的垂直位置。在下面的示例中,geom_segment 以 x 轴上的变量为中心。

我想绘制从 x 轴变量的直线开始并向上方延伸的线段。我尝试了类似 yend = variable + 1 的方法,但显然不起作用。

关于 geom_vline 与分类轴的问题有点类似于 。但是,我认为 yintercept = ... 之类的东西在我的情况下不起作用。

library(tidyverse)

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), size = 10)

reprex package (v2.0.1)

于 2022-04-28 创建

我问的原因是因为在我的真实数据中,我为每个从 x 轴变量的行开始的 x 变量(ggridges::geom_density_ridges)添加了一个直方图。如果 geom_segmentgeom_density_ridges 不在同一水平面上,情节看起来很奇怪。

也许您可以使用 geom_rect

library(ggplot2)
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) + 
  geom_rect(aes(xmin = start, xmax = end, 
                ymin = variable, ymax = as.numeric(variable) + 0.2, 
                fill = color))

reprex package (v2.0.1)

于 2022-04-28 创建