2012-06-03 171 views
6

我的問題涉及的曲線圖的製作中R.出版物我已經使用了繪圖功能等如下:ř情節,x軸和y軸觸摸

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

SL的範圍從51.7至73.7和BD從13.5到20.4。不幸的是,我不允許發佈圖像。

但是,想擺脫我使用「軸= F」的框。現在的問題是缺乏對軸功能的控制。我用:

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))) 

問題是,我不能設法得到Y軸和X軸在同一點走到一起作爲與盒子的情節。如何讓x軸和y軸相互接觸?

回答

3

最有可能設置xaxs =「我」和yaxs =「我」將幫助您獲得所需的行爲。

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

嘗試box(bty='L')只繪製框的左側和底部部分。您也可以使用lines,segmentsabline以及使用grconvertXgrconvertY函數自己繪製線,以查找繪製線的位置。

+1

完美,將'bty ​​=「L」'傳遞給'plot()'爲我工作。 – thomasfedb

1

我建議您按照您列出的程序,然後使用:

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

如:

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") 

您應該通過選擇lwd = 0lwd.ticks = 1您單獨axis()通話爲了以防止軸的某些部分看起來比軸的其他部分更粗糙,因爲有些部分會被您撥打box()的部分覆蓋,有些部分會執行n OT。

使用box()最後的解決方案,我認爲更一般,因爲你可以使用它,你不能或不想通過你的plot.defaultplot.window呼叫bty = "l"