首页 > 解决方案 > 将主要网格线对齐到条形宽度的末端而不是切入条形?

问题描述

嗨,假设我有一个带有蓝色网格线的条形图,如下所示。我想要的是蓝线不切入条形图,而仅在整个宽度结束后才开始。这可能吗?

ggplot(mpg, aes(class)) + geom_bar(aes(weight = displ)) + 
    theme(panel.grid.major.x  = element_line(colour="blue", size=0.5)) 

该图的箭头显示了我希望网格线对齐而不是切入条形的位置。 gg

标签: rggplot2

解决方案


你会满足于使用geom_vline吗?

ggplot(mpg, aes(class)) + geom_bar(aes(weight = displ)) + 
  geom_vline(xintercept= seq_along(unique(mpg$class)) + 0.45, color = "blue") +
  theme(panel.grid.major.x = element_blank())

在此处输入图像描述

另一个选项可能是使用position_nudge,但是您必须担心axis.text.x位置和填充 x 限制。

ggplot(mpg, aes(x = class)) + geom_bar(aes(weight = displ), position = position_nudge(-0.45)) + 
  scale_x_discrete(expand = c(0.1,0.4)) +
  theme(panel.grid.major.x  = element_line(colour="blue", size=0.5),
        axis.text.x = element_text(hjust = 1)) 

在此处输入图像描述


推荐阅读