gpt4 book ai didi

plot - 如何在 Julia 中绘制矢量场?

转载 作者:行者123 更新时间:2023-12-03 14:39:55 25 4
gpt4 key购买 nike

我想在 Julia 中绘制一个向量场。我找不到示例 here .
Here有一些使用 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)

enter image description here

最佳答案

简短的回答:使用 quiver来自 Plots.jl。

quiver(x, y, quiver=(u, v))

在下文中,我将尝试完全重新创建您在 Matlab 中展示的示例。

首先,我们将导入 Plots并启用 plotly后端。
using Plots
plotly()

我们需要定义一个类似于 Matlab 的 meshgrid 的函数.由于 Plots 将在我们的点数组上运行而不管它们的维数,我选择简单地使用 repeat并使用“扁平化”输出。
 meshgrid(x, y) = (repeat(x, outer=length(y)), repeat(y, inner=length(x)))

现在,我们可以创建 x , y , u , 和 v使用与 Matlab 代码相同的逻辑。为简洁起见,我们可以使用 @.宏以向量化给定表达式中的所有调用。
x, y = meshgrid(0:0.2:2, 0:0.2:2)
u = @. cos(x) * y
v = @. sin(x) * y

从这里,我们可以简单地使用 quiver来自 Plots 的函数,通过 uv作为关键字参数的二元组 quiver .
quiver(x, y, quiver=(u, v))

Initial plot

结果接近于 Matlab 输出,但似乎 Plots.jl 将箭头缩放到比它们在 Matlab 中更长。不过,这很容易修复;我们可以简单地广播乘法 uv由尺度常数。
scale = 0.2
u = @. scale * cos(x) * y
v = @. scale * sin(x) * y

Final plot

关于plot - 如何在 Julia 中绘制矢量场?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51466537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com