【发布时间】:2011-03-26 12:47:50
【问题描述】:
如何绘制矢量场,其中每个点 (x, y) 的方向由 tangent(alpha) = f(x, y) 给出?
【问题讨论】:
标签: gnuplot
如何绘制矢量场,其中每个点 (x, y) 的方向由 tangent(alpha) = f(x, y) 给出?
【问题讨论】:
标签: gnuplot
这个问题/答案似乎有点老了,因为我相信 gnuplot 在最新版本中有所改变,所以答案可能应该更新。
我在这里找到了一个不错且紧凑的解决方案,通过这些: http://gnuplot.10905.n7.nabble.com/Vector-Fields-td3627.html
为方便起见,我将报告:
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) = <x, 2y>。
诀窍在于情节“++”,这是一个特殊的文件名,允许使用using 说明符中的函数。
因此,正如@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
更多详情请参阅help special-filenames。
嗨
【讨论】: