2012-09-06 41 views
17

Khi tôi tạo lô sau, tôi nhận được không gian không mong muốn giữa vùng vẽ và trục (ví dụ khoảng trắng giữa hộp màu xanh lam và trục x. Làm cách nào tôi có thể xóa không gian này và tạo âm mưu diện tích ngang bằng với những âm mưu trục? Cảm ơn.Xóa khoảng cách xung quanh khu vực vẽ trong 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

CẬP NHẬT tôi cố gắng gợi ý từ plannapus với dữ liệu thực tế của tôi, nhưng chỉ có thể nhận được các y-axis cư xử là có một số người khác trong này đoạn mã bổ sung khoảng trống cho các cạnh của khu vực vẽ đồ?

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) 

sản xuất

enter image description here

+0

"là có một số khác trong đoạn mã này được bổ sung thêm không gian để các bên của khu vực âm mưu?" Có: 'asp = 1'. Với điều này, bạn buộc trục x và y bằng nhau, có thể xung đột với kích thước của vùng ô của bạn. – plannapus

+0

thêm 'par (pty =" s ")' trước khi cuộc gọi đến 'cốt truyện 'sẽ buộc khu vực ô phải là hình vuông (do đó' "s" ') và không hình chữ nhật như trên hình ảnh của bạn và do đó chính xác cho' asp' "trục trặc". – plannapus

+0

Tôi nghĩ rằng bạn nên đi cho câu trả lời @plannapus, hoặc simly đặt 'xlim',' ylim' để khớp với khu vực bạn muốn vẽ. Mặc dù giải pháp của @ Alan cho sự xuất hiện đúng đắn nhưng nó không phải là khái niệm chính xác cho những gì bạn muốn làm ở đây. Nó chỉ "chữa khỏi triệu chứng" để nói. – Backlin

Trả lời

24

Có một đối số trong hàm plot xử lý: xaxs (và yaxs cho trục y). Theo mặc định, nó được đặt thành xaxs="r" có nghĩa là 4% giá trị trục được để lại ở mỗi bên. Để đặt thành 0: xaxs="i". Xem phần xaxs trong ?par để biết thêm thông tin.

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 Tôi muốn sử dụng giải pháp của bạn nhưng tôi gặp rắc rối vì tôi đang sử dụng asp = 1, thêm khoảng trống cho cả hai mặt của trục x với giải pháp của bạn (xem ví dụ dưới cập nhật được đề cập). Có cách nào để tránh vấn đề này không? – Elizabeth

+0

@Elizabeth Bạn đã thử 'par (pty =" s ")' như tôi đã gợi ý trong phần bình luận ở trên chưa? (Lý tưởng là mặc dù giải pháp sẽ xác định chính xác kích thước của khu vực vẽ đồ họa của bạn nhưng đó là một nỗi đau để làm) – plannapus

+0

Tôi đã làm nhưng chỉ nhận thấy tôi đã có một lỗi trong dòng đó. Cố định và bây giờ nó hoạt động. Cảm ơn :) – 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ất cả trục là loại bỏ sau đó bạn có thể thêm các trục mới cho pos bạn muốn.

+0

Nó hoạt động chính xác nhưng cần lưu ý rằng giải pháp này di chuyển các trục nhưng không sửa đổi khu vực vẽ đồ thị. – plannapus

Các vấn đề liên quan