在python中绘制方向场

Pho*_*ght 3 python matlab numpy matplotlib scipy

我想绘制一个简单方程的方向场:

\n\n
y\'  = 3 \xe2\x88\x92 2y\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在这里发现了类似的Matlab问题(1.3)。但我不知道如何将其重写为python。我最后的尝试是:

\n\n
from matplotlib.pyplot import cm\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nnx, ny = .3, .3\nx = np.arange(-3, 3, nx)\ny = np.arange(-2, 2, ny)\nX, Y = np.meshgrid(x, y)\n\ndy = X + np.sin(Y)\ndx = np.ones((10,10))\n\nplot2 = plt.figure()\nplt.quiver(X, Y, dx, dy, \n           color=\'Teal\', \n           headlength=7)\n\nplt.title(\'Quiver Plot, Single Colour\')\nplt.show(plot2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我收到错误:

\n\n
builtins.ValueError: operands could not be broadcast together with shapes (100,) (280,) \n
Run Code Online (Sandbox Code Playgroud)\n\n

我虽然这会很简单,但是经过几个小时的搜索如何绘制一个简单的方向场后,我感到非常沮丧。

\n

Ale*_*dro 6

您还可以使用场的流线来给出流动的良好印象,并根据场的某些属性(在本例中为 dy)为曲线着色。看下面的例子:

nx, ny = .3, .3
x = np.arange(-3, 3, nx)
y = np.arange(-2, 2, ny)
X, Y = np.meshgrid(x, y)
dy = X + np.sin(Y)
dx = np.ones(dy.shape)

color = dy
lw = 1
plt.streamplot(X,Y,dx, dy, color=color, density=1., cmap='jet', arrowsize=1)
Run Code Online (Sandbox Code Playgroud)

其产生:

在此输入图像描述


tmd*_*son 5

dx并且必须与和dy具有相同的形状。XY

目前,您的形状为(14, 20)forX和,但for 。Ydy(10,10)dx

如果将定义行更改dx为:

dx = np.ones(dy.shape)
Run Code Online (Sandbox Code Playgroud)

一切正常:

在此输入图像描述