web-dev-qa-db-ja.com

Rまたはpython)を使用して座標系でベクトルをプロットする

デカルト平面にベクトルをプロットするためのアドバイスを探しています。タスクは、ポイント(座標)をプロットしてから、それらを矢印でソースポイント(たとえば0,0)にリンクすることです。下の画像はアイデアを与えるはずです。色やベクトル/点の命名は気にしません。座標平面に矢印をプロットするだけです。線形代数のベクトルと演算をプロットするためのライブラリがR(またはPython)に存在すると確信しています。

どんなポインタでもいただければ幸いです!

vectors in a plane
(出典: mathinsight.org

12
sim

または、Rでarrows関数を使用できます。

plot(c(0,1),c(0,1))
arrows(0,0,1,1)
14
danas.zuokas
plot(NA, xlim=c(0,5), ylim=c(0,5), xlab="X", ylab="Y")
vecs <- data.frame(vname=c("a","b","a+b", "transb"), 
                   x0=c(0,0,0,2),y0=c(0,0,0,1), x1=c(2,1,3,3) ,y1=c(1,2,3,3), 
                   col=1:4)
with( vecs, mapply("arrows", x0, y0, x1,y1,col=col) )

arrows呼び出しにlwd = 3を追加すると、少し見栄えが良くなります。 text関数はラベル付けを可能にし、「srt」パラメーターで回転させることができます。

plot(NA, xlim=c(0,5), ylim=c(0,5), xlab="X", ylab="Y", lwd=3)
 with( vecs, mapply("arrows", x0, y0, x1,y1,col=col,lwd=3) )
 with(vecs, mapply('text', x=x1[1:3]-.1, y=y1[1:3]+.1, 
  labels=expression(list(a[1],a[2]), list(b[1],b[2]), list(a[1]+b[1],a[2]+b[2]) ) ))

enter image description here

list呼び出し内のexpression関数はplotmathlist-呼び出しであり、plotmath -listが通常のpasteと異なるのと同様に、通常のRpasteとは異なることに注意してください。親フレームで引数を評価しようとはしません。そのためには、bquoteまたはsubstituteが必要であり、おそらくsapplyを使用して「内部」式を処理する必要があります。

11
42-

いくつかのランダムな大きさ2のベクトルを描画するEasy(TM)の方法。最初にユークリッドノルムを計算します。そうしないと、矢印関数が点から点へと矢印をプロットして三角形を作成します。説明としてはニースですが、必要なものではありません。残りは簡単です:

#first some vectors 
v1<-c(-3,5)
v2<-c(2,-10)
v3 <-c(0,-3)
v4 <- c(2,5)
# This one for the coordinates of the plot
ax<-c(-10,10)
# I will need the euclidean norm (two-norm) of the vectors: 
mag <- function(x) sqrt(sum(x^2))
# I call plot to set up the "canvas"
plot(ax,ax,main="Test")
# I do the stuffz, the FIRST pair of params is the Origin
arrows(0,0, mag(v1),mag(v2),lwd=4,col="red")
arrows(-2,1, mag(v3),mag(v4),lwd=4,col="blue")
2
runlevel0

最も明白な行動方針は、多くのプロット機能を備えたpythonのmatplotlibパッケージを使用することです。

具体的には、リバースエンジニアリングを行います この例

より芸術的でデカルト的でない方法で素晴らしい結果を得る別の方法は、rsvgを使用してSVGを作成およびレンダリングすることです。私はそれを試したことがありませんが、SVGは矢じりをネイティブにサポートしているはずです。また、SVGファイルは、必要に応じてInkscapeなどの描画プログラムで編集できます。

0
heltonbiker