чи можу я змінити положення мітки смужки в ggplot зверху вниз?


80

Я знаю, що це не зовсім проблема візуалізації даних, але начальник просив про це, тому мені потрібно з’ясувати, чи можливо це.

Дякую!



11
ggplot2 - це потужне, але самовпевнене програмне забезпечення - іноді це спосіб ggplot або зовсім не такий.
Sharpie

погодьтеся, потрібно зробити деякі модифікації за допомогою сітки, тоді ще одна крута крива навчання знову
lokheart

Дивіться пов’язану публікацію на форумі в коментарях на stackoverflow.com/questions/10058839/… , де дається необхідний хакерський зв’язок
Бен Болкер,

1
Не могли б ви прийняти прийняту відповідь? Це більше не правильно, але ця відповідь є найпопулярнішим, коли шукаєш запитання.
Конрад Рудольф

Відповіді:


97

Відповідь для тих, хто шукає у 2016 році.

Починаючи з ggplot22.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 визначається шкалою та одиницями виміру, які ви використовуєте у своїй змові.


1
Ніякого ефекту для мене теж
геотеорія

Це лише коригує текст, а не положення смужок на діаграмі.
Тейлор Уайт

1
Для мене також ніякого ефекту, рекомендую використовувати switchаргумент, як зазначено вище. Конкретно відповісти на ОП; switch = "x"перемістить мітки до нижньої частини ділянки.
Екологія, Том,

Дякую ! Ваше рішення допомогло мені виправити ще одну проблему, яку я мав: вирівняти ярлики вліво (використовуючи hjust замість vjust)
rvezy

-5

Щоб продовжити використання теми:

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

Переконайтеся, що всі ваші етикетки мають однакову кількість повернень каретки.

Label /n Facet /n Oneбуде змінюватися з іншою швидкістю, ніж Label /n Facet Two.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.