czy mogę zmienić położenie paska etykiety w ggplot od góry do dołu?

80

Wiem, że to nie do końca problem z wizualizacją danych, ale szef poprosił o to, więc muszę się dowiedzieć, czy to możliwe.

Dzięki!

lokheart
źródło
11
ggplot2 to potężne, ale uparte oprogramowanie - czasami jest to sposób ggplot lub wcale.
Sharpie
zgadzam się, trzeba zrobić jakąś modyfikację za pomocą siatki, znowu stroma krzywa uczenia się
lokheart
Zobacz post na forum z linkiem w komentarzach na stackoverflow.com/questions/10058839/… , który podaje wymagane
hakowanie
1
Czy mógłbyś cofnąć zaakceptowaną odpowiedź? Nie jest już poprawna, ale ta odpowiedź jest głównym hitem podczas wyszukiwania w Google pytania.
Konrad Rudolph

Odpowiedzi:

97

Odpowiedź dla poszukujących w 2016 roku.

Od ggplot2wersji 2.0 argument switch zrobi to dla facet_gridlub facet_wrap:

Domyślnie etykiety są wyświetlane w górnej i prawej części wykresu. Jeśli „x”, górne etykiety będą wyświetlane na dole. Jeśli "y", etykiety po prawej stronie będą wyświetlane po lewej stronie. Można również ustawić na „oba”.

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

Od wersji 2.2.0 ggplot2 ,

Stripsy mogą być teraz dowolnie pozycjonowane facet_wrap()za pomocą argumentu strip.position (deprecates switch).

Obecne dokumenty są nadal w wersji 2.1, ale strip.positionjest udokumentowane w dokumentacji deweloperskiej.

Domyślnie etykiety są wyświetlane w górnej części wykresu. Za pomocą strip.position można umieścić etykiety po jednej z czterech stron poprzez ustawieniestrip.position = c("top", "bottom", "left", "right")

ggplot(...) + ... + facet_wrap(facets, strip.position="right")
Dave
źródło
2
Aktualizacja 2020 - ggplot 3.3 - facet_grid nadal używa switch z argumentami x, ylub both.
nniloc
11

możesz teraz użyć facet_wrap(~var, strip.position = "bottom"), choć z jakiegoś powodu powoduje to, że etykiety znajdują się nad etykietami znaczników osi, a nie poniżej (co moim zdaniem byłoby bardziej sensowne), jak widać na moim zrzucie ekranu małej części mojego wykresu

zrzut ekranu wykresu

Jeśli chcesz mieć poniższą etykietę, musisz to zrobić

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"
  )

Jak widać tutaj: https://github.com/tidyverse/ggplot2/issues/2622

luda
źródło
-2

Odpowiedź brzmi tak!

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

Liczba -10 jest określona przez skalę i jednostki, których używasz na swoim wykresie.

brainSci
źródło
1
Dla mnie też nie ma to znaczenia
geoteoria
To tylko dostosowuje tekst, a nie położenie pasków na wykresie.
Taylor White
1
Dla mnie również nie ma to wpływu, polecam użycie switchargumentu, jak określono powyżej. Aby konkretnie odpowiedzieć na PO; switch = "x"przeniesie etykiety na dół wykresu.
EcologyTom,
Dziękuję Ci ! Twoje rozwiązanie pomogło mi rozwiązać inny problem, który miałem: wyrównać etykiety (używając hjust zamiast vjust).
rvezy
-5

Aby śledzić użycie motywu:

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

Upewnij się, że wszystkie etykiety mają taką samą liczbę powrotów karetki.

Label /n Facet /n Onebędzie vjust w innym tempie niż Label /n Facet Two.

Mark Wagner
źródło