3次元のベクトル場を書く際には(heplots | compositions)パッケージの(arrow3d | arrows3D)関数

rglパッケージベースな3次元ベクトルのplot on 3次元には(heplots | compositions)パッケージを使うのがよさげか。書き方の便利さからcompositionsパッケージを使っていきたい。

また、rglベースじゃなく、静止画でOKならplot3Dパッケージもあった。

heplotsパッケージ

第一・二引数にベクトルの始・終点を入れる。
一気に複数のベクトルが書けないぽいのでループでまわさんとだめっぽい。
↓適当なベクトル100個を描画

library("heplots")
for(i in 1:100)
{
  arrow3d(rep(0, 3), rnorm(3), barblen=.2, lwd=1, col="red")
}

これで、グリグリも動かせるこんなんが出る。花火っぽい。

compositionsパッケージ

同様に、素直に始・終点だけ入れる。こちらはベクトル(行列)として渡せるので楽。

library("compositions")
x <- matrix(rnorm(300), nrow=100, ncol=3)
x0 <- x*0
arrows3D(x0,x)

こちらでもグリグリも動かせる花火っぽいのがでる。

範囲のボックスを付けたい

xlim, ylim, zlim引数を指定してdecorate3d関数を叩けばベクトル場全体を囲むような範囲boxがかける