2012-02-03 8 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の値。これらの量を計算する方法はありますか?

EDIT: 質問の背景は:bezier curvesを描きたいと思います。カーブの太さが自分のデータを表すようにします。私の最初のアイデアは、そのためにlwdを使用することでした。私は良くできますか?

答えて

3

lwdは、実行しようとしている間違ったツールです。実際の線幅は、プロットウィンドウのサイズ(または保存時の寸法)のサイズに応じて、ユーザー座標を基準として変化します。あなたは明らかにrectコマンドについて知っています、なぜそれを使用するだけではありませんか? shapeパッケージを調べることもできます。 --Edit--

は、より複雑な形状のために、私の経験ではpolygonを超えて拡張しません。これで、ベジエ曲線の座標bcを取得し、x = c(bc$x + dx, rev(bc$x - dx), y = c(bc$y + dy, rev(bc$y - dy)の周りにポリゴンを描くことができましたが、複雑な曲線がどれくらいうまくいくかわかりません。

points(..., type = "l")をご希望の場合はlines(...)に置き換えることができます。 (私はそれが私のコードをより読みやすくすると思う)。

+0

もし私ができるなら、私はこの回答を2回upvoteしたい。 'rect'アドバイスの場合+1、 'shape'パッケージの場合+1。アスペクト比を設定する必要がある場合は、 'plot.window'関数にaspパラメータがあります。 –

+0

速い答えをありがとう、私はそれをより明確にするために私の質問を編集しました。 'shape'ビネットは、私が知らなかった' diagram'パッケージに私を導いてくれました。 –

+0

もう一度おねがいします、私は今、 'ポリゴン'が行く方法だと思います。カーブが急な時に何かが間違っていますが、私はそれを理解することを願っています。 –

関連する問題