Kann ich die Position des Streifenetiketts in ggplot von oben nach unten ändern?


80

Ich weiß, dass dies kein Problem mit der Datenvisualisierung ist, aber der Chef hat danach gefragt, also muss ich herausfinden, ob es möglich ist.

Vielen Dank!



11
ggplot2 ist eine leistungsstarke, aber einfühlsame Software - manchmal ist es der ggplot-Weg oder überhaupt kein Weg.
Sharpie

stimme zu, muss dann einige Modifikationen mit dem Gitter vornehmen, dann wieder eine steile Lernkurve
lokheart

Siehe den verknüpften Forumsbeitrag in den Kommentaren unter stackoverflow.com/questions/10058839/… , der den erforderlichen Grid-Hackery enthält
Ben Bolker

1
Könnten Sie bitte die akzeptierte Antwort nicht akzeptieren? Es ist nicht mehr richtig, aber diese Antwort ist der Top-Hit, wenn Sie nach der Frage googeln.
Konrad Rudolph

Antworten:


96

Eine Antwort für diejenigen, die 2016 suchen.

Ab ggplot22.0 führt das switch-Argument dies für facet_gridoder aus facet_wrap:

Standardmäßig werden die Beschriftungen oben und rechts im Diagramm angezeigt. Bei "x" werden die oberen Beschriftungen unten angezeigt. Wenn "y", werden die Beschriftungen auf der rechten Seite links angezeigt. Kann auch auf "beides" gesetzt werden.

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

Ab ggplot2 2.2.0 ,

Streifen können jetzt facet_wrap()mit dem Argument strip.position frei positioniert werden (veraltet switch).

Aktuelle Dokumente, sind nach wie vor bei 2,1, aber strip.positionsind dokumentiert auf der Entwickler - Dokumentation.

Standardmäßig werden die Beschriftungen oben im Diagramm angezeigt. Mit strip.position ist es möglich, die Etiketten durch Einstellen auf einer der vier Seiten zu platzierenstrip.position = c("top", "bottom", "left", "right")

ggplot(...) + ... + facet_wrap(facets, strip.position="right")

2
2020 Update - ggplot 3.3 - facet_grid verwendet immer noch switch mit Argumenten x, yoder both.
nniloc

9

Sie können jetzt verwenden facet_wrap(~var, strip.position = "bottom"), obwohl dies aus irgendeinem Grund dazu führt, dass sich die Beschriftungen über den Markierungsbeschriftungen der Achse befinden und nicht darunter (was meiner Meinung nach sinnvoller wäre), wie Sie auf meinem Screenshot eines kleinen Teils meines Diagramms sehen können

Screenshot des Diagramms

Wenn Sie das Etikett unten haben möchten, müssen Sie dies tun

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

Wie hier zu sehen: https://github.com/tidyverse/ggplot2/issues/2622


-2

Die Antwort ist ja!

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

Die Zahl -10 wird durch die Skala und die Einheiten bestimmt, die Sie in Ihrem Diagramm verwenden.


1
Keine Wirkung für mich auch
Geotheory

Dadurch wird nur der Text angepasst, nicht die Position der Streifen im Diagramm.
Taylor White

1
Auch für mich keine Auswirkung, empfehlen Sie die Verwendung des switchoben angegebenen Arguments. Um das OP spezifisch zu beantworten; switch = "x"Verschiebt die Beschriftungen an den unteren Rand des Diagramms.
EcologyTom

Danke ! Ihre Lösung hat mir geholfen, ein anderes Problem zu beheben, das ich hatte: die Beschriftungen links ausrichten zu lassen (allerdings mit hjust anstelle von vjust).
Rvezy

-5

Um die Verwendung des Themas zu verfolgen:

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

Stellen Sie sicher, dass Ihre Etiketten alle die gleiche Anzahl von Wagenrückläufen haben.

Label /n Facet /n Onewird mit einer anderen Geschwindigkeit als eingestellt Label /n Facet Two.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.