【问题标题】:Vector field using gnuplot使用 gnuplot 的向量场
【发布时间】:2011-03-26 12:47:50
【问题描述】:

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

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

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

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

    如果您不坚持使用 gnuplot,还有其他工具可以更好地或至少更容易地做到这一点。我个人使用asymptote。有一个在渐近线here 中绘制的向量场示例。

    【讨论】:

      【解决方案2】:

      这个问题/答案似乎有点老了,因为我相信 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。

      嗨

      【讨论】:

      • 等效公式给出错误:“x 范围无效”。
      • 它对我有用,你确定你输入的所有内容都正确吗?
      • @AkiRoss,请将 set xrange [-5:5] set yrange [-5:5] 添加到等效公式示例中。如果有人逐字使用示例的现有三行,他们会收到“x 范围无效”错误。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多