使用gnuplot的向量场

使用gnuplot的向量场,gnuplot,Gnuplot,如何绘制向量场,其中每个点(x,y)的方向由切线(alpha)=f(x,y)?据我所知,gnuplot只能在从文件读取数据时绘制向量场。您的文件必须有4列,x,y,deltax和deltay,然后gnuplot将为文件中的每一行绘制一个从(x,y)到(x+deltax,y+deltay)的向量: plot "file.dat" using 1:2:3:4 with vectors head filled lt 2 如果您不坚持使用gnuplot,那么还有其他工具可以更好地或至少更容易地实现这一

如何绘制向量场,其中每个点(x,y)的方向由切线(alpha)=f(x,y)?

据我所知,gnuplot只能在从文件读取数据时绘制向量场。您的文件必须有4列,x,y,deltax和deltay,然后gnuplot将为文件中的每一行绘制一个从(x,y)到(x+deltax,y+deltay)的向量:

plot "file.dat" using 1:2:3:4 with vectors head filled lt 2

如果您不坚持使用gnuplot,那么还有其他工具可以更好地或至少更容易地实现这一点。我个人使用。有一个矢量场的例子是用渐近线绘制的。

这个问题/答案似乎有点过时了,因为我认为gnuplot在最新版本中有点变化,所以答案可能应该更新

我在这里找到了一个很好且紧凑的解决方案:

为方便起见,我将报告:

set xrange [-5:5]
set yrange [-5:5]
# only integer x-cordinates
set samples 11
# only integer y-cordinates
set isosamples 11
# we need data, so we use the special filename "++", which
# produces x,y-pairs
plot "++" using 1:2:1:(2.*$2) with vectors
这里,最初的问题是如何绘制向量场
F(x,y)=
。 诀窍在于绘图“++”,这是一个特殊的文件名,允许使用说明符使用
中的函数

因此,正如@Jan在他的回答中所说,gnuplot需要数据文件中的4个字段来绘制向量场,但这里的字段是合成的,并由两个函数生成

使用定义函数的等效公式可以是:

set xrange [-5:5]
set yrange [-5:5]
dx(x) = x
dy(x) = 2*x
plot "++" using 1:2:(dx($1)):(dy($2)) w vec
有关详细信息,请参阅“帮助特殊文件名”


HIH

等效公式出现错误:“x范围无效”。它对我有效,你确定键入的所有内容都正确吗?@AkiRoss,请将set xrange[-5:5]set yrange[-5:5]添加到等效公式示例中。如果有人逐字使用示例中现有的三行,则会出现“x范围无效”错误。非常感谢。