2010-08-20 13 views
6

मैं एक full.contour साजिश के भीतर एक बॉक्स प्लॉट करने की कोशिश कर रहा हूं, लेकिन दुर्भाग्य से, जब मैं fill.contour साजिश बनने के बाद लाइनों() को साजिश करता हूं, तो आंकड़ा दाईं ओर स्थानांतरित हो जाता है क्योंकि स्केल छवि को मजबूर करता है बाएं, लेकिन बॉक्स एक ही निर्देशांक पर रहता है।आर में full.contour भूखंडों के भीतर एक बॉक्स प्लॉटिंग?

dev.new(width=6,height=7) 
mypredict<-matrix(data=mypredict,nrow=20,ncol=25) 
filled.contour(x=seq(from=-1.5,to=1.5,length=20), 
y=seq(from=1,to=3.75,length=25), 
z=mypredict, 
col=hsv(h=seq(from=2/3,to=0,length=20),s=1,v=1) 
) 
top <- 3.42 
bot <- 1.56 
lines(c(-1,-1),c(bot,top)) 
lines(c(1,1),c(bot,top)) 
lines(c(-1,1),c(top,top)) 
lines(c(-1,1),c(bot,bot)) 

किसी को भी पता है कि कैसे मैं filled.contour समारोह के भीतर उन पंक्तियों के प्लॉट कर सकते हैं: यहाँ मेरी कोड कैसा दिखता है? अन्यथा, रेखाएं मुख्य छवि पर सही ढंग से साजिश नहीं करती हैं, क्योंकि ग्राफ़ के पैमाने/किंवदंती को दाईं ओर रखा जाता है।

धन्यवाद!

उत्तर

6
filled.contour के लिए

मैनुअल पृष्ठ समस्या बताते हैं (और एक समाधान देता है)

इस समारोह वर्तमान में 'लेआउट' समारोह का उपयोग करता है और इसलिए एक पूरा पृष्ठ प्रदर्शित करने के लिए प्रतिबंधित है। वैकल्पिक रूप से 'लेवलप्लॉट' और 'लैटिस' पैकेज से 'contourplot' फ़ंक्शंस पर विचार करें जो मल्टीपानेल डिस्प्ले में काम करते हैं।

'full.contour' द्वारा उत्पादित आउटपुट वास्तव में दो प्लॉट्स का संयोजन है; एक भरे हुए समोच्च है और एक पौराणिक कथा है। इन दो भूखंडों, के लिए दो अलग समन्वय प्रणालियों की स्थापना की गई है, लेकिन फ़ंक्शन लौटने के बाद इन्हें आंतरिक रूप से का उपयोग किया जाता है इन समन्वय प्रणालियों को खो दिया जाता है। यदि आप मुख्य समोच्च साजिश को एनोटेट करना चाहते हैं, उदाहरण के लिए अंक जोड़ने के लिए, आप 'plot.axes' तर्क में ग्राफिक्स कमांड निर्दिष्ट कर सकते हैं। एक उदाहरण नीचे दिया गया है।

तो अनिवार्य रूप से आप मानक व्यवहार को ओवरराइड करने के लिए plot.axes पैरामीटर के रूप में कुछ निर्देश गुजरती हैं।

अपने उदाहरण में:

filled.contour(x = seq(from=-1.5,to=1.5,length=20), 
     y = seq(from=1,to=3.75,length=25), z = mypredict, 
     col = hsv(h=seq(from=2/3,to=0,length=20),s=1,v=1), 
     plot.axes = {axis(1); axis(2); rect(left, bottom, right, top);}) 

नोट आप दो अक्षों अन्यथा वे बनाया नहीं जाएगा पुनः बनाना है। rect फ़ंक्शन होने पर, lines कथन का उपयोग करने की आवश्यकता नहीं है! :)

उम्मीद है कि यह

+0

धन्यवाद में मदद करता है! यह एक बड़ी मदद है! रेक्ट फ़ंक्शन भी एक अच्छी टिप है! –

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