2012-06-03 47 views
6

Vấn đề của tôi liên quan đến việc tạo ra một biểu đồ cho một ấn phẩm trong R. Tôi đã sử dụng các chức năng cốt truyện như sau:R cốt truyện, x-trục và trục y chạm

plot(x=data$SL, y=data$BD, xlab = "SL (mm)", ylab = "BD (mm)", pch=data$pch) 

SL dao động 51,7-73,7 và BD từ 13,5 đến 20,4. Rất tiếc, tôi chưa được phép đăng hình ảnh.

Tuy nhiên, muốn loại bỏ hộp tôi đã sử dụng "trục = F". Vấn đề bây giờ là thiếu kiểm soát chức năng trục. Tôi đã sử dụng:

axis(side=1, lwd=3, xpd=TRUE, at=c(min(data$SL):max(data$SL))) 
axis(side=2, lwd=3, xpd=TRUE, at=c(min(data$BD):max(data$BD))) 

Vấn đề là tôi không thể quản lý để lấy trục y và trục x cùng nhau trong ô với ô. Làm thế nào để trục x và trục y chạm vào nhau?

Trả lời

3

Nhiều khả năng thiết lập xaxs = "i" và yaxs = "i" sẽ giúp bạn nhận được hành vi mong muốn.

plot(c(1,2,3),c(2,4,6),axes=F,xaxs = "i",yaxs="i",xlim=c(0,3),ylim=c(0,6)) 
axis(side=1, lwd=3, xpd=TRUE, at=0:3) 
axis(side=2, lwd=3, xpd=TRUE, at=seq(0,6,2)) 
5

Hãy thử box(bty='L') để vẽ chỉ phần bên trái và dưới cùng của hộp. Bạn cũng có thể tự vẽ các đường bằng cách sử dụng các chức năng lines, segments hoặc abline và sử dụng các chức năng grconvertXgrconvertY để tìm các vị trí cần vẽ đường kẻ.

+1

Hoàn hảo, chuyển 'bty =" L "' thành 'plot()' đã hoạt động cho tôi. – thomasfedb

1

tôi đề nghị bạn làm theo các thủ tục bạn phác thảo và sau đó sử dụng:

box(which = "plot", bty = "l")

ví dụ:

plot.new() 
plot.window(xlim = c(1, 18), ylim = c(2, 20)) 
points(1:18, 2:19, pch = 1, col = "#FF7F24", cex = 1.2) 
lines(1:18, 2:19, col = "#FF7F24", lwd = 2) 
axis(side  = 1, 
    lwd  = 0, 
    lwd.ticks = 1, 
    at  = 1:18, 
    cex.axis = 0.9) 
title(main = "Plot", 
     ylab = "Y-Axis") 
legend("top", 
     legend = c("Legend"), 
     col = c("#FF7F24"), 
     text.col = c("#FF7F24"), 
     pch = 1, 
     bty = "n", 
     cex = 1.2) 
axis(side  = 2, 
    lwd  = 0, 
    lwd.ticks = 1) 
box(which = "plot", bty = "l") 

Bạn nên vượt qua các tùy chọn lwd = 0lwd.ticks = 1 để riêng biệt axis() cuộc gọi của bạn theo thứ tự để ngăn một số phần của trục của bạn xuất hiện nhiều hơn các phần khác của trục của bạn vì một số phần bị che phủ bởi cuộc gọi của bạn tới box() và một số làm n ot.

Giải pháp sử dụng box() ở cuối là, tôi nghĩ, tổng quát hơn ở chỗ bạn có thể sử dụng nó khi ví dụ: bạn không thể hoặc không muốn vượt qua bty = "l" trong các cuộc gọi plot.default hoặc plot.window của mình.

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