2012-09-06 10 views
17

जब मैं निम्नलिखित साजिश बनाने मैं अंकन क्षेत्र और (अक्ष नीले बॉक्स और एक्स अक्ष के बीच यानी सफेद स्थान के बीच अवांछित स्थान मिलता है। मैं इस स्थान निकाल कर बना सकते हैं साजिश के साथ साजिश रचने क्षेत्र फ्लश अक्ष? धन्यवाद।निकालें आसपास रिक्ति r में क्षेत्र की साजिश रचने

xleft<-c(1,2,2.5) 
xright<-c(2,2.5,2.75) 
ybottom<-c(1,2,2.5) 
ytop<-c(2,2.5,2.75) 

par(mar = c(15,15,2.75,2.75) + 0.1) 
plot(c(1,2.75),c(1,2.75),type="n",main="title",xlab="site.x",ylab="ylab") 
rect(xleft,ybottom,xright,ytop,col=c("blue","red","green")) 

#Label position along axes 
x.label.position<-(xleft+xright)/2 
y.label.position<-(ybottom+ytop)/2 

#Labels 
x.label<-c("Long species Name1","Long species Name2","Long species Name3") 
y.label<-c("Long species Name4","Long species Name5","Long species Name5") 

text(par()$usr[1]-0.5,y.label.position,y.label,xpd=TRUE,adj=1) 
text(y=par()$usr[3]-0.5,x=x.label.position,x.label,xpd=TRUE,adj=1,srt=90) 

par(xpd=TRUE) 
legend(-0.1,0,legend=c("Species A","Species B","Species C"),fill=c("blue", "red", "green")) 

enter image description here

अद्यतन मैं अपने वास्तविक डेटा के साथ plannapus से सुझाव की कोशिश की लेकिन केवल व्यवहार करने के लिए y- अक्ष प्राप्त कर सकते हैं इस में कुछ और है कोड है कि साजिश रचने क्षेत्र के पक्षों के लिए अंतरिक्ष जोड़ने का हिस्सा?

quartz("colour.plot") 
par(mar=c(15,15,4,2)+0.1)#sets margins of plotting area 

#create the data plot 
    plot(c(0,100), c(0,100), type = "n", main = paste(x,"vs",y," -",depth),xlab=paste("Species composition in remainder ",x),ylab=paste("Species composition in remainder ",y),asp=1,xaxs="i",yaxs="i") 

#Add the rectangles 
rect(mdf$xleft,mdf$ybottom,mdf$xright,mdf$ytop,col=mdf$colour) 

पैदा करता

enter image description here

+0

"कोड के इस टुकड़ा है कि साजिश क्षेत्र के पक्षों के लिए अंतरिक्ष जोड़ने में वहाँ कुछ बाकी है?" हां: 'एएसपी = 1'। इसके साथ आप एक्स और वाई अक्षों को बराबर करने के लिए मजबूर कर रहे हैं, जो शायद आपके साजिश क्षेत्र के आकार के साथ संघर्ष करते हैं। – plannapus

+0

'प्लॉट' को कॉल करने से पहले 'par (pty =" s ") जोड़ने से साजिश क्षेत्र को वर्ग (इसलिए' '' '') होना चाहिए और आपकी छवि के अनुसार आयताकार नहीं होना चाहिए और इसलिए 'asp' के लिए सही होना चाहिए "गड़बड़"। – plannapus

+0

मुझे लगता है कि आप @plannapus जवाब के लिए जाना चाहिए, या simly 'xlim',' ylim' क्षेत्र आप प्लॉट करने के लिए चाहते हैं मैच के लिए निर्धारित किया है। यद्यपि @ एलन का समाधान सही दिखता है, लेकिन यह वैचारिक रूप से सही नहीं है जो आप यहां करना चाहते हैं। यह कहने के लिए केवल "लक्षण ठीक करता है"। – Backlin

उत्तर

24

फ़ंक्शन plot में एक तर्क है जो वाई-अक्ष के लिए xaxs (और yaxs) को संभालता है। के रूप में लागू हो यह जिसका अर्थ है कि धुरी मूल्य का 4% प्रत्येक पक्ष पर छोड़ दिया है xaxs="r" को तैयार है। इसे 0: xaxs="i" पर सेट करने के लिए। अधिक जानकारी के लिए ?par में xaxs अनुभाग देखें।

plot(c(1,2.75),c(1,2.75),type="n",main="title",xlab="site.x",ylab="ylab", xaxs="i", yaxs="i") 
rect(xleft,ybottom,xright,ytop,col=c("blue","red","green")) 

enter image description here

+0

@planapus मैं चाहूँगा अपने समाधान का उपयोग करने लेकिन क्योंकि मैं एएसपी = 1 जो आप समाधान के साथ x- अक्ष के दोनों पक्षों के लिए अंतरिक्ष कहते हैं का उपयोग कर रहा मैं परेशानी हो रही (प्रश्न में अद्यतन के तहत उदाहरण देखें)। क्या इस समस्या से बचने के लिए वैसे भी है? – Elizabeth

+0

@ एलिज़ाबेथ क्या आपने उपरोक्त टिप्पणियों में सुझाए गए अनुसार 'par (pty = "s") कोशिश की है? (आदर्श रूप में हालांकि समाधान वास्तव में अपने साजिश रचने क्षेत्र के आकार को परिभाषित करने के लिए होगा, लेकिन ऐसा करने के लिए एक दर्द है) – plannapus

+0

मैंने किया था लेकिन सिर्फ मुझे लगता है कि लाइन में एक त्रुटि थी देखा। फिक्स्ड और अब यह काम करता है। धन्यवाद :) – Elizabeth

4
plot(c(1,2.75),c(1,2.75),type="n",main="title",xlab="site.x",ylab="ylab",axes=F) # ann 
axis(1,pos=1) 
axis(2,pos=1) 

सभी कुल्हाड़ियों निकाल तो आप pos आप चाहते हैं करने के लिए नए कुल्हाड़ियों जोड़ सकते हैं।

+0

यह सही तरीके से काम करता है लेकिन यह ध्यान दिया जाना चाहिए कि यह समाधान धुरी को स्थानांतरित करता है लेकिन साजिश क्षेत्र को संशोधित नहीं करता है। – plannapus

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