Anmerkungen zu einzelnen Facetten in ggplot2

Ich möchte einen Text auf der letzten Facette des Diagramms mit folgendem Code annotieren:

library(ggplot2) p <- ggplot(mtcars, aes(mpg, wt)) + geom_point() p <- p + facet_grid(. ~ cyl) p <- p + annotate("text", label = "Test", size = 4, x = 15, y = 5) print(p) 

Bildbeschreibung hier eingeben

Aber dieser Code kennzeichnet den Text auf jeder Facette. Ich würde es sehr schätzen, wenn Sie mir helfen würden, den kommentierten Text auf nur einer Seite zu bekommen. Danke im Voraus.

Solutions Collecting From Web of "Anmerkungen zu einzelnen Facetten in ggplot2"

Normalerweise würden Sie so etwas tun:

 ann_text < - data.frame(mpg = 15,wt = 5,lab = "Text", cyl = factor(8,levels = c("4","6","8"))) p + geom_text(data = ann_text,label = "Text") 

Es sollte funktionieren, ohne die Faktorvariable vollständig anzugeben, wird aber wahrscheinlich einige Warnungen ausgeben:

Bildbeschreibung hier eingeben

Hier ist die Handlung ohne Textanmerkungen:

 library(ggplot2) p < - ggplot(mtcars, aes(mpg, wt)) + geom_point() + facet_grid(. ~ cyl) + theme(panel.spacing = unit(1, "lines")) p 

Plot ohne Textanmerkungen

Erstellen wir einen zusätzlichen Datenrahmen für die Textanmerkungen:

 dat_text < - data.frame( label = c("4 cylinders", "6 cylinders", "8 cylinders"), cyl = c(4, 6, 8) ) p + geom_text( data = dat_text, mapping = aes(x = -Inf, y = -Inf, label = label), hjust = -0.1, vjust = -1 ) 

Zeichnen Sie mit Textanmerkungen an den Rändern

Alternativ können wir die Position jedes Etiketts manuell angeben:

 dat_text < - data.frame( label = c("4 cylinders", "6 cylinders", "8 cylinders"), cyl = c(4, 6, 8), x = c(20, 27.5, 25), y = c(4, 4, 4.5) ) p + geom_text(data = ann_text,label = "Text") p + geom_text( data = dat_text, mapping = aes(x = x, y = y, label = label) ) 

Diagramm mit manuell positionierten Textbeschriftungen

Anmerkungen:

  • Sie können -Inf und Inf um Text an den Kanten eines Panels zu positionieren.
  • Sie können mit hjust und vjust die vjust anpassen.
  • Das dat_text Datenframe dat_text sollte eine Spalte haben, die mit Ihrem facet_grid() oder facet_wrap() .

Ich denke, für die Antwort oben lab = “Text” ist nutzlos, der Code unten ist auch in Ordnung.

 ann_text < - data.frame(mpg = 15,wt = 5, cyl = factor(8,levels = c("4","6","8"))) p + geom_text(data = ann_text,label = "Text" ) 

Wenn Sie jedoch in verschiedenen Sub-Graphen unterschiedlich beschriften möchten, wird es auf diese Weise in Ordnung sein:

 ann_text < - data.frame(mpg = c(14,15),wt = c(4,5),lab=c("text1","text2"), cyl = factor(c(6,8),levels = c("4","6","8"))) p + geom_text(data = ann_text,aes(label =lab) )