2017-09-21 3 views
1

Ich versuche, die Facettenstreifen in einem ggplot zu entfernen, aber ich bekomme einen Fehler. Basierend auf der vorhandenen Hilfe besteht die Möglichkeit darin, die Themenparameter strip.background und strip.text auf element_blank() zu setzen. Wenn ich dies jedoch mache, erhalte ich einen Fehler:ggplot2: Fehler beim Setzen Facettenstreifen zu element_blank()

Error in apply(strip_mat, 1, max_height) : dim(X) must have a positive length

Hier ist ein reproduzierbares Beispiel.

library(ggplot2) 
gdat = data.frame(a = rep(LETTERS[1:10], 10), x = rnorm(100), y = rnorm(100)) 
g = ggplot(gdat, aes(x = x, y = y)) + geom_point() 
g = g + facet_wrap(~a) 
g = g + theme(strip.background = element_blank(), strip.text = element_blank()) 
g 

Können Sie mir helfen zu verstehen, was ich falsch mache? Ich verwende R Open 3.4.0 und ggplot2 2.2.1.9.

+0

wenn meine Lösung Ihr Problem gelöst können Sie die Antwort akzeptieren, so dass wir diese Frage schließen kann – PoGibas

+0

Ihre Lösung funktioniert, aber es scheint eine Abhilfe zu sein. Soweit ich das beurteilen kann, sollte mein Code keinen Fehler enthalten. Ich hatte gehofft herauszufinden, ob es einen Fehler in ggplot2 gibt oder ob der von mir bereitgestellte Code nicht korrekt ist. Wenn ich bald keine Antwort bekomme, akzeptiere ich die bereitgestellte Lösung und schließe sie. –

+0

Dies ist ein Fehler, der in der nächsten Version behoben werden wird – ThomasP85

Antwort

1

Eine Lösung besteht darin, die Farbe der Facettenetiketten auf transparent zu setzen (element_text(color = "transparent")) oder die Etikettengröße auf 0 mit element_text(size = 0) einzustellen. Um den Abstand zwischen den Panels zu entfernen, verwenden Sie panel.spacing (in diesem Fall verkleinere ich den Abstand auf der Achse y).

library(ggplot2) 

d <- data.frame(a = rep(LETTERS[1:10], 10), x = rnorm(100), y = rnorm(100)) 
ggplot(d, aes(x, y)) + 
    geom_point() + 
    facet_wrap(~ a) + 
    theme(strip.background = element_blank(), 
      strip.text = element_text(color = "transparent"), 
      panel.spacing.y = unit(-0.8, "lines")) 

enter image description here

+0

Ich habe das versucht, aber es bleibt immer noch der Abstand zwischen den Facetten. Ich möchte, dass der Abstand auch entfernt wird. –

+0

@StephenJones Ich aktualisierte meine Antwort – PoGibas

+0

Vielleicht versuchen Sie "transparent" statt "weiß"? Sie können die Streifenbeschriftungen immer noch mit "weiß" sehen, wenn der Hintergrund wie im Beispiel grau ist. – aosmith