2009-09-19 10 views

Antwort

25
b0 = 2.5; b1 = 2 
n = 100 
x = rnorm(n, 20, 15) 
y = b0 + b1*x + rnorm(n, 0, 15) 
plot(x, y) 
plot(x, y, type='n') 
text(x, y, round(y, 2), cex=0.45) 
text(x, y, round(y, 2), cex=0.8) 
text(x, y, paste(round(x, 2), round(y, 2), sep=", "), cex=0.8) # for (x, y), but this gets cluttered. 

alt text

Verwenden cex für Zeichengröße (Hilfe für siehe Text). Und verwenden Sie plot(x, y, type='n'), um Ihr Fenster korrekt einzurichten, ohne tatsächlich etwas zu zeichnen.

+1

Kleinere Punkte: Sie haben einen Tippfehler in Zeile 5 (Trick statt Plot); und ich wäre versucht, Format oder formateC anstelle von rund zu verwenden, da Sie eine Zeichenfolge wünschen, die keine Zahl zurückgibt. Versuchen Sie z.B. Format (y, trimmen = WAHR, Ziffern = 2) –

+0

Danke Richie. Ich dachte über das Format nach, aber ich dachte mir, round() wäre für einen Anfänger offensichtlicher. Und paste() wird in Strings umgewandelt. – Vince

5

Verwendung text():

plot(1:10, 1:10) 
text(5, 5, "Foo") 

und sehen help(text) für Optionen auf den Text platzieren. Die Funktion wird vektorisiert so können Sie auch

text(1:10, 1:10, LETTERS[1:10]) 

so etwas wie tun, wenn Sie Vektoren von Text und Positionen haben.

1

ähnliche Antwort auf Vinces außer ggplot2 mit:

b0 = 2.5; b1 = 2 
n = 20 
x = rnorm(n, 20, 15) 
y = b0 + b1*x + rnorm(n, 0, 15) 
dat<-data.frame(x,y) 
library(ggplot2) 
ggplot(data=dat)+geom_text(aes(x=x,y=y),size=4,label=paste(round(x, 2), round(y, 2), sep=", ")) 

Zeichengröße kann durch Veränderung der Größenparameter geändert werden.

+0

Ich sollte mehr in ggplot schauen. Es scheint in der Popularität zu wachsen. Ich habe Gitter für die harten Sachen verwendet. – Vince

0
x <- 1/3 
plot(1,type="none",ann=FALSE) 
## text and values only 
text(mean(par("usr")[1:2]),mean(par("usr")[3:4])-par("cxy")[2]*2, 
    paste("z = ",round(x,2))) 
## text, values, and mathematical expressions 
text(mean(par("usr")[1:2]),mean(par("usr")[3:4]), 
    bquote(x^2==.(round(x,2)))) 
text(mean(par("usr")[1:2]),mean(par("usr")[3:4])-par("cxy")[2], 
    substitute(gamma==value,list(value=round(x,2)))) 
2

Mit ggplot2 können Sie sowohl Punkte als auch Beschriftungen hinzufügen. Das Setzen von aes() in ggplot() hat den Vorteil, dass aes() der Standard für alle Geoms ist. Daher Sie nur in diesem Fall müssen einmal die x und Werte angeben, aber sie werden von beiden geom_point verwendet() und geom_text()

Der modifizierte Code von Ian Fellows würde wie folgt aussehen:

b0 <- 2.5 
b1 <- 2 
n <- 20 
dat <- data.frame(x = rnorm(n, 20, 15)) 
dat$y <- b0 + b1*dat$x + rnorm(n, 0, 15) 
dat$text <- with(dat, paste(round(x, 2), round(y, 2), sep=", ")) 
library(ggplot2) 
ggplot(data=dat, aes(x = x, y = y, label = text)) + geom_point() + geom_text(size=4, hjust = 1, vjust = 1) 
0

kann dies vielleicht auch

# example data 
dat <- data.frame(name = sample(letters[1:4],20, replace=T), x1 = rnorm(20,2), x2 = 42+x1*rnorm(20,0,2)) 
# plot the data 
plot(dat$x1,dat$x2) 
# use identify to print name for each 'dot' that you click with left mouse 
identify(dat$x1,dat$x2,labels=name) 
# When done identifying point, click with right mousebutton. 

Ich mag diese Funktionalität für interaktive Zwecke helfen. Weiß nicht, wie dies in ggplot zu erreichen, obwohl

-1

ich diese Methode gefunden und es ist sehr nützlich:

for i=1:6 
text(x(i),y(i),num2str(y(i))); 
end 

Wiederholen Sie diese Zeile für jedes Mitglied in der Handlung.

+3

Dies ist kein gültiger R-Code. – joran