2012-02-03 59 views
0

如何使用lwd來表示某個數量?將lwd單位轉換爲用戶座標(R基本圖形)?

例如:

plot(NULL, type="n", xlim=c(4,7), ylim=c(1,6), xlab="", ylab="") 
points(c(5.25,5.25), c(4,5), type="l", lwd=87) 
points(c(5.5,6.5), c(3.5,3.5), type="l", lwd=92) 
rect(5,3,5.5,4, col="white") 

我想用points功能完全一樣寬/高大如矩形繪製的線條。上面的值87和92我手動找到。有沒有辦法來計算這些數量?

編輯: 問題的背景是:我想繪製bezier curves,我想曲線的厚度代表我的數據。我的第一個想法是使用lwd。我可以做得更好嗎?

回答

3

lwd是您嘗試執行的操作的錯誤工具。實際線寬將根據用戶座標的大小(或保存時的尺寸)而改變。你顯然知道rect命令,爲什麼不使用它?您也可以查看shape包。

- 編輯 -

對於更復雜的形狀,我的經驗不超出polygon。這樣,你可以得到一個貝塞爾曲線的座標bc,然後圍繞x = c(bc$x + dx, rev(bc$x - dx), y = c(bc$y + dy, rev(bc$y - dy)繪製一個多邊形,但是我不確定那麼多麼好看一個複雜的曲線。

另外,如果您願意,可以用lines(...)代替points(..., type = "l")。 (我認爲它使我的代碼更具可讀性。)

+0

如果可以,我會爲此答案upvote兩次。對'rect'建議+1,對'shape'封裝提及+1。如果需要設置寬高比,那麼'plot.window'函數有一個asp參數。 – 2012-02-03 18:21:53

+0

感謝您的快速回答,我編輯了我的問題,使其更清晰。 「形狀」小插曲指引我到我不知道的「圖」包。 – 2012-02-03 18:22:24

+0

再次感謝,我現在認爲'多邊形'是要走的路。曲線陡峭時有些問題,但我希望我能弄明白。 – 2012-02-03 18:51:41