如何在Julia上绘制矢量场?

时间:2018-09-17 04:20:49

标签: plot julia

我是朱莉娅(Julia)的新手,我曾尝试编写下面的帖子https://svgwg.org/specs/animations/#TimingAttributes的代码,但是没有用,所以,我想知道是否可以使用“情节”,又如何?这对我的研究非常重要。

P.s .:有人给我下面的代码,但是实际上,我不知道为什么不起作用:

using Plots
gr(size=(600,400))

function example()
  X = linspace(-2, 2, 100)
  Y = linspace(-2, 2, 100)
  f(x, y) = x^3 - 3x + y^2
  contour(X, Y, f)

  x = linspace(-2, 2, 11)
  y = linspace(-2, 2, 11)
  df(x, y) = [3x^2 - 3; 2y] / 25
  quiver!(x, y', quiver=df, c=:blue)

  xlims!(-2, 2)
  ylims!(-2, 2)
  png("example")
end

example()

2 个答案:

答案 0 :(得分:4)

正如评论中已经提到的那样,您应该提供错误消息,否则人们必须猜测您的代码出了什么问题。

但是,在您的情况下,我认为我可以猜到:)

在Julia 1.0上,以下作品:

using Plots
gr(size=(600,400))

function example()
  X = range(-2, stop=2, length=100)
  Y = range(-2, stop=2, length=100)
  f(x, y) = x^3 - 3x + y^2
  contour(X, Y, f)

  x = range(-2, stop=2, length=11)
  y = range(-2, stop=2, length=11)
  df(x, y) = [3x^2 - 3; 2y] / 25
  quiver!(x, y', quiver=df, c=:blue)

  xlims!(-2, 2)
  ylims!(-2, 2)
  png("example")
end

example()

并给出以下输出

enter image description here

请注意,由于Julia 0.7中的linspace函数has been deprecated,我只将linspace的所有出现都更改为range(-2, stop=2, length=X)

答案 1 :(得分:2)

对于 Plots v1.10.4,您需要为每个箭袋提供一个起始位置

# same code as in above answer
quiver!(repeat(x,11), vec(repeat(y',11)), quiver=df, c=:blue)