выровнять основную линию сетки до конца ширины полосы вместо того, чтобы разрезать полосу? - PullRequest
0 голосов
/ 08 мая 2020

Привет, предположим, у меня есть гистограмма с синими линиями сетки, как показано ниже. Я хочу, чтобы синяя линия не врезалась в график, а начиналась только после того, как закончится вся ширина. Это возможно?

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

стрелки на рисунке показывают, где я хочу, чтобы линия сетки выровнялась, а не врезалась в полосу. gg

1 Ответ

1 голос
/ 08 мая 2020

Согласитесь ли вы использовать 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())

enter image description here

Другой вариант может заключаться в использовании 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)) 

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...