2012-09-06 13 views
17

Aşağıdaki çizim oluşturduğumda çizim alanı ile eksen arasında istenmeyen alan (yani mavi kutu ile x ekseni arasındaki boşluk) elde edersem bu alanı nasıl kaldırabilirim arsa ile komplo alanı floş? eksenleri teşekkürler.Aşağıdaki çizim alanını çizerek 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

GÜNCELLEME benim gerçek verilerle plannapus gelen öneri denedik ama sadece davranmaya y ekseniyle alabilirsiniz bunda bazı başka olduğunu çizilen alanın kenarlarına boşluk ekleyen kod parçası?

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) 

+0

"Çizim alanının yanlarına alan eklemektedir bu kod öbekte bazı başka nedir?" Evet: 'asp = 1'. Bununla, x ve y eksenlerini eşit olacak şekilde zorlarsınız, bu da muhtemelen arsa bölgenizin büyüklüğüyle çakışır. "Plot" çağrısından önce "par (pty =" s ")' ifadesinin eklenmesi – plannapus

+0

(plot = "s"), arsa bölgesini kare olarak (yani "s" ') ve görüntünüzde olduğu gibi dikdörtgen değil ve bu nedenle de 'asp' için düzeltmelidir "aksaklık". – plannapus

+0

Bence, @plannapus cevabı için cevap vermelisin, ya da simly, çizmek istediğin bölgeyle eşleştirmek için "xlim", "ylim" i ayarla. @ Alan'ın çözümü doğru görünümü sağlamasına rağmen, burada yapmak istediğiniz şey için doğru değildir. Sadece "semptomu tedavi eder" demek. – Backlin

cevap

24

plot işlevinde, aşağıdakileri işleyen bir argüman var: xaxs (ve y ekseni için yaxs). Varsayılan olarak xaxs="r" olarak ayarlanmıştır, bu da eksen değerinin% 4'ünün her iki tarafta kalması anlamına gelir. Bunu 0: xaxs="i" olarak ayarlamak için. Daha fazla bilgi için ?par numaralı telefondan xaxs bölümüne bakın.

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 Çözümünüzü kullanmak isterim fakat sorun yaşıyorum çünkü x ekseninin her iki tarafına da çözüm içeren asp = 1 kullanıyorum (söz konusu güncelleştirme altındaki örneğe bakın). Bu sorunu önlemek için zaten var mı? – Elizabeth

+0

@Elizabeth Yukarıdaki yorumlarda önerdiğim gibi par (pty = "s") 'yi denediniz mi? (İdeal olarak çözüm, komplo bölgenizin büyüklüğünü tam olarak tanımlamak olsa da bu bir acıdır). – plannapus

+0

Yaptım ama fark ettim ki bu satırda bir hatam oldu. Sabit ve şimdi çalışıyor. Teşekkürler :) – 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) 

Tüm eksenler

enter image description here

sonra pos istediğiniz yeni eksenlerini ekleyebilir kaldır vardır üretir.

+0

Doğru çalışır, ancak bu çözümün eksenleri hareket ettirdiğini, ancak çizim alanını değiştirmediğini belirtmek gerekir. – plannapus

İlgili konular