控制主要网格线的长度 - ggplot2

Control the length of major grid lines - ggplot2

在ggplot2中有控制主要网格线长度的解决方案吗?我在这里有一个图,我希望主要网格线出现在零线的左侧(只是负值)。所以对于柱 "a",只有一小部分网格线是可见的。

# Some Data
df <- data.frame(trt = c("a", "b", "c"),
             outcome = c(-222.3, 121.9, 103.2))

# A plot with major grid lines
ggplot(df, aes(trt, outcome)) +
  geom_col() + 
  coord_flip() +
  theme_classic()+
  theme(panel.grid.major.y = element_line(color = "blue", size = 1)) +
  geom_hline(yintercept = 0, size = 1)

您无法控制网格线的范围;根据定义,网格涉及整个绘图区域,因此在 ggplot 中没有选项。您可以做的是使用绘制线条的几何图形,例如 geom_linerange:

ggplot(df, aes(trt, outcome)) +
  geom_linerange(ymin = -Inf, ymax = 0, color = 'blue') +
  geom_col() + 
  coord_flip() +
  geom_hline(yintercept = 0) +
  theme_classic() +
  theme(panel.grid = element_blank())