2009-09-19 13 views

उत्तर

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

चरित्र आकार के लिए उपयोग cex (पाठ के लिए सहायता देखें)। और वास्तव में कुछ भी प्लॉट किए बिना अपनी खिड़की को सही तरीके से सेट करने के लिए plot(x, y, type='n') का उपयोग करें।

+1

मामूली अंक: आपके पास लाइन 5 पर एक टाइपो है (साजिश के बजाय प्लेय); और मैं गोल के बजाए प्रारूप या प्रारूप सी का उपयोग करने के लिए लुभाना चाहता हूं, क्योंकि आप एक स्ट्रिंग को एक संख्या वापस नहीं करना चाहते हैं। कोशिश करें, उदाहरण के लिए, प्रारूप (वाई, ट्रिम = TRUE, अंक = 2) –

+0

धन्यवाद रिची। मैंने प्रारूप के बारे में सोचा, लेकिन मुझे लगा कि दौर() का काम शुरुआती के लिए अधिक स्पष्ट होगा। और पेस्ट() तारों में परिवर्तित हो जाएगा। – Vince

5

उपयोग text():

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

और पाठ रखने के विकल्पों के लिए help(text) देखते हैं। समारोह vectorised है, ताकि आप भी कुछ सदृश

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

अगर आप पाठ और पदों की वैक्टर है कर सकते हैं।

1

ggplot2 का उपयोग कर को छोड़कर विन्स की जवाब देने के लिए समान:

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=", ")) 

चरित्र आकार आकार पैरामीटर बदलकर बदला जा सकता है।

+0

मुझे ggplot में और अधिक देखना चाहिए। ऐसा लगता है कि लोकप्रियता में बढ़ रहा है। मैं कठोर सामान के लिए जाली का उपयोग कर रहा हूँ। – 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

ggplot2 के साथ आप दोनों बिंदुओं और लेबल जोड़ सकते हैं। Ggplot() में एईएस() को रखना लाभ है कि यह एईएस() सभी भूगर्भों के लिए डिफ़ॉल्ट होगा। इसलिए, इस मामले में आप केवल एक बार एक्स और मूल्यों निर्दिष्ट करने की आवश्यकता है, लेकिन वे दोनों geom_point() और geom_text()

द्वारा उपयोग किया जाता इयान अध्येताओं के संशोधित कोड इस तरह दिखेगा:

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

हो सकता है कि यह रूप में अच्छी तरह मदद कर सकते हैं

# 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. 

मैं इंटरैक्टिव प्रयोजनों के लिए इस कार्यक्षमता की तरह। पता न यद्यपि

-1

मैं इस विधि मिल गया है और यह बहुत उपयोगी है कैसे ggplot में इस लक्ष्य को हासिल करने के लिए:

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

दोहराएँ साजिश में प्रत्येक सदस्य के लिए इस लाइन।

+3

यह मान्य आर कोड नहीं है। – joran

संबंधित मुद्दे