Juliaでベクトル場をプロットしたいと思います。例が見つかりませんでした ここ 。 ここplotly
を使用した例がいくつかありますが、それらは私には機能しません。ベクトル場をplotlyjs
またはplotly
でプロットしたいと思います。
Juliaのサンプルコードは次のとおりです。
using Plots
pyplot()
x = collect(linspace(0,10,100));
X = repmat(x,1,length(x));
Y = repmat(x',length(x),1);
U = cos.(X.*Y);
V = sin.(X.*Y);
streamplot(X,Y,U,V)
Matlabの例を次に示します。
[x,y] = meshgrid(0:0.2:2,0:0.2:2);
u = cos(x).*y;
v = sin(x).*y;
figure
quiver(x,y,u,v)
簡単な答え:Plots.jlのquiver
を使用してください。
quiver(x, y, quiver=(u, v))
以下では、Matlabで示した例を完全に再現しようとします。
まず、Plots
をインポートし、plotly
バックエンドを有効にします。
using Plots
plotly()
Matlabのmeshgrid
に似た関数を定義する必要があります。プロットは次元に関係なく点の配列で動作するため、私は単にrepeat
を使用し、「フラット化された」出力を使用することを選択しました。
meshgrid(x, y) = (repeat(x, outer=length(y)), repeat(y, inner=length(x)))
これで、Matlabコードと同じロジックを使用して、x
、y
、u
、およびv
を作成できます。簡潔にするために、@.
マクロを使用して、指定された式のすべての呼び出しをベクトル化できます。
x, y = meshgrid(0:0.2:2, 0:0.2:2)
u = @. cos(x) * y
v = @. sin(x) * y
ここから、Plotsのquiver
関数を使用して、u
とv
を2タプルとしてキーワード引数quiver
に渡すことができます。
quiver(x, y, quiver=(u, v))
結果はMatlabの出力に近いですが、Plots.jlは矢印をMatlabよりも長くなるようにスケーリングしているようです。ただし、これは簡単に修正できます。 u
とv
にスケール定数を単純にブロードキャスト乗算できます。
scale = 0.2
u = @. scale * cos(x) * y
v = @. scale * sin(x) * y