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!

lokheart
quelle
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")
Dave
quelle
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

luda
quelle
-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.

brainSci
quelle
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.

Mark Wagner
quelle