Центрирование повернутых этикеток, когда ось x находится вверху - PullRequest
3 голосов
/ 06 мая 2020

Стандартный прием для центрирования повернутых этикеток - использовать vjust. Он работает должным образом, когда ось находится внизу:

library( ggplot2 )
gg <- ggplot( mtcars, aes(hp, mpg) ) + geom_point() + theme_bw()
gg + theme( axis.text.x=element_text(angle=90, vjust=0.5) )

Синий контур показывает, что метки правильно центрированы относительно отметок оси.

x axis on the bottom

Однако мне кажется, что я не могу добиться того же эффекта, когда ось x расположена вверху:

gg + theme( axis.text.x=element_text(angle=90, vjust=0.5) ) +
  scale_x_continuous(position="top")

x axis on the top

Более того, похоже, что vjust не действует, когда ось x находится вверху. Я не обнаружил визуальной разницы, когда изменил vjust на 0 или на 1. Обыскивая связанные сообщения, я обнаружил проблему GitHub , где предлагается использовать margin() вместо hjust / vjust. Однако мне не удалось заставить его центрировать мои метки независимо от того, была ли ось x расположена вверху или внизу:

# Top and bottom margins properly increase space between labels and axis ticks / title
gg + theme( axis.text.x=element_text(angle=90, margin=margin(t=10)) )   # Works
gg + theme( axis.text.x=element_text(angle=90, margin=margin(b=10)) )   # Works

# Left and right margins appear to have no effect
gg + theme( axis.text.x=element_text(angle=90, margin=margin(r=10)) )   # No effect
gg + theme( axis.text.x=element_text(angle=90, margin=margin(l=10)) )   # No effect

Есть ли трюк для центрирования меток, когда ось x наверху? Полагаю, я всегда могу go покопаться в иерархии гробов, но я надеялся, что есть более элегантное решение.

1 Ответ

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

Используйте вместо axis.text.x.top:

gg + theme( axis.text.x.top =element_text(angle=90, vjust=.5)  ) +
  scale_x_continuous(position="top")

enter image description here

Странно, поскольку вращение все еще работает. Я бы хотел, чтобы пакет разъяснил это, но вы все равно можете получить то поведение, которое вам нужно

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