2016-06-16 17 views
1

Zunächst einmal bin ich Anfänger R Benutzer. Ich möchte R-Quadrat und P-Wert in meinem Diagramm hinzufügen. Aber, in einer Linie trennen Sie einfach durch ein Komma. Beigefügt ist der Code, den ich versuche zu verwenden. JedochIch kann nicht zwei Anmerkungen mit einem Komma trennen

ggplot(data, aes(x,y))+ 
geom_point(shape=1,size=4)+ 
stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+ 
annotate("text",x=30,y=0.45,label=c("italic(r^{2}==0.151)","p==0.226"),parse=TRUE)+ 
theme_bw(base_size = 12) 

, erhalte ich diesen Fehler:

Error: Aesthetics must be either length 1 or the same as the data (1): label

Dank!

Antwort

2

Wenn Sie mehrere Ausdrücke als einzelnen Ausdruck analysieren möchten, können Sie paste verwenden, um die Ausdrücke in eine einzelne Zeile zu übernehmen. Wie in der anderen Antwort erklärt, gibst du jetzt annotate zwei verschiedene Ausdrücke, aber nur einen Satz von x, y Koordinaten und dies verursacht den Fehler.

ohne Komma, könnte der einzige Ausdruck aussehen

paste("italic(r^{2}) ==", 0.151, "~p==.226")

Dies ist, was Sie in annotate setzen, wie Ihr Etikett würde. Die zusätzliche Tilde macht einen Abstand zwischen dem ersten und dem zweiten Ausdruck.

Um das Komma einzuschließen, benötigen Sie list in Plotmath. In Plotmath bedeutet list eine Komma getrennte Listen (siehe ?plotmath für alle verfügbaren Funktionen). Im Wesentlichen bedeutet dies, dass Sie Ihren gesamten Ausdruck in list innerhalb paste verpacken.

paste("list(italic(r^{2}) ==", 0.151, ", p==.226)") 

Und so Ihre annotate Code

+ annotate("text", x=30, y=0.45, label=paste("list(italic(r^{2}) ==", 0.151, ", p==.226)"), parse=TRUE) 
+0

Nizza wäre. Warum konnte ich das nicht zur Arbeit bringen? ggplot versagte im Stillen, als ich das Komma hinzufügte. –

+0

Ah, wegen der Liste anstelle eines Zeichenarrays? Warum macht das einen Unterschied? Ungerade. –

+0

@MikeWise Ja, 'list' in plotmath ist, was Komma-getrennte Listen erlaubt. Ohne dass Sie entweder einen Fehler bekommen oder kein Komma bekommen. – aosmith

0

Dies funktioniert, aber Sie erhalten kein Komma, weil ein Komma den Formelparser verwirrt.

library(ggplot2) 
set.seed(123) 
n <- 100 
data <- data.frame(x=(40+10*rnorm(n)),y=-0.2+0.5*rnorm(n)) 
ggplot(data)+ 
    geom_point(aes(x,y),shape=1,size=4)+ 
    stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+ 
    annotate("text",x=c(30,37),y=c(0.45,0.43),label=c("italic(r^{2}==0.151)","p==0.226"), 
                      parse=TRUE) + 
    theme_bw(base_size = 12) 

Hier ist die Grafik.

enter image description here

Hinweis Ihre Fehler zu kommen, weil Sie ihm einen Vektor der Länge 2 in Ihrem annotate Befehl, sondern die x und y Parameter haben nur Länge von 1. Ich stellte sie geben, aber es wäre besser als eine Zeile, denke ich.

Um das Komma man kann es in zwei Schichten annotate wie thi brechen:

enter image description here

Aber ich persönlich denke, es Mühe zu viel ist:

library(ggplot2) 
set.seed(123) 
n <- 100 
data <- data.frame(x=(40+10*rnorm(n)),y=-0.2+0.5*rnorm(n)) 
ggplot(data)+ 
    geom_point(aes(x,y),shape=1,size=4)+ 
    stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+ 
    annotate("text",x=30,y=0.45,label="italic(r^{2}==0.151)", parse=T) + 
    annotate("text",x=36,y=0.43,label=", p==0.226",parse=F) + 
    theme_bw(base_size = 12) 

dieses Nachgeben. Geh ohne das Komma. Obwohl es einen Weg geben könnte, um es in der Formel mit einer Escape-Sequenz oder etwas zu bekommen.