я могу изменить положение метки полосы в ggplot сверху вниз?

80

Я знаю, что это не совсем проблема с визуализацией данных, но босс попросил об этом, поэтому мне нужно выяснить, возможно ли это.

Благодаря!

Локхарт
источник
11
ggplot2 - мощное, но самоуверенное программное обеспечение - иногда это способ ggplot или вообще никакой.
Sharpie
согласен, тогда нужно внести некоторые изменения, используя сетку, снова крутая кривая обучения
lokheart
См. Связанное сообщение на форуме в комментариях на stackoverflow.com/questions/10058839/… , где приведены необходимые хакерские методы для сетки
Бен Болкер,
1
Не могли бы вы отклонить принятый ответ? Это уже неверно, но этот ответ является самым популярным при поиске вопроса в Google.
Конрад Рудольф

Ответы:

97

Ответ для ищущих в 2016 году.

Начиная с ggplot2версии 2.0, аргумент switch будет делать это для facet_gridили facet_wrap:

По умолчанию метки отображаются вверху и справа от графика. Если "x", верхние метки будут отображаться внизу. Если "y", то метки с правой стороны будут отображаться слева. Также можно установить "оба".

ggplot(...) + ... + facet_grid(facets, switch="both")

Начиная с ggplot2 2.2.0 ,

Полосы теперь можно свободно позиционировать с facet_wrap()помощью аргумента strip.position (не рекомендуется switch).

Текущие документы, по - прежнему на 2.1, но strip.positionэто документировано на Дев документы.

По умолчанию метки отображаются в верхней части графика. Используя strip.position, можно разместить этикетки на любой из четырех сторон, установивstrip.position = c("top", "bottom", "left", "right")

ggplot(...) + ... + facet_wrap(facets, strip.position="right")
Дэйв
источник
2
Обновление 2020 - ggplot 3.3 - по- facet_grid прежнему используется switch с аргументами x, yили both.
nniloc
11

теперь вы можете использовать facet_wrap(~var, strip.position = "bottom"), хотя по какой-то причине это приводит к тому, что метки располагаются над метками отметок оси, а не ниже (что, я думаю, имеет больше смысла), как вы можете видеть на моем снимке экрана с небольшой частью моего графика

скриншот графика

Если вы хотите, чтобы ярлык был ниже, вы должны сделать это

ggplot(zzz, aes(x = c1, y = c2)) +
  facet_wrap(~ gp, scales = "free", nrow = 3, strip.position = "bottom") +
  geom_point() +
  theme(
    aspect.ratio = 1,
    strip.background = element_blank(),
    strip.placement = "outside"
  )

Как видно здесь: https://github.com/tidyverse/ggplot2/issues/2622

Люда
источник
-2

Ответ положительный!

theme(strip.text=element_text(vjust=-10))

Число -10 определяется масштабом и единицами измерения, которые вы используете на своем графике.

brainSci
источник
1
На меня тоже не влияет
геотеория
Это изменяет только текст, но не положение полос на диаграмме.
Тейлор Уайт
1
Для меня тоже никакого эффекта, рекомендую использовать switchаргумент, как указано выше. Чтобы конкретно ответить на OP; switch = "x"переместит метки в нижнюю часть графика.
EcologyTom
Спасибо ! Ваше решение помогло мне исправить другую проблему, которая у меня была: выровнять метки по левому краю (хотя с помощью hjust вместо vjust).
rvezy
-5

Чтобы следить за использованием темы:

тема (strip.text = element_text (vjust = -10))

Убедитесь, что на всех ваших этикетках одинаковое количество символов возврата каретки.

Label /n Facet /n Oneбудет vjust с другой скоростью, чем Label /n Facet Two.

Марк Вагнер
источник