📜  如何在 Matplotlib 中绘制一个简单的向量场?

📅  最后修改于: 2022-05-13 01:55:24.906000             🧑  作者: Mango

如何在 Matplotlib 中绘制一个简单的向量场?

包含大小和方向的量 被称为向量。简单地说,我们可以说,向量场是这些向量在空间子集中的参与或协作。矢量场是了解我们现实生活环境的关键方面。

为了更直观,您可以将向量场视为表示一个多变量函数,其输入和输出空间都具有相同的维度。矢量场中绘制的箭头的长度通常不是按比例绘制的,但一个矢量与另一个矢量的长度比例应该是准确的。

在本文中,我们将讨论如何在Python中绘制矢量场。为了执行此任务,我们将使用matplotlib模块中的quiver()方法和streamplot()方法。

句法:

使用quiver()方法绘制矢量场:

其中 X 、 Y定义矢量位置, U 、 V是相对于矢量位置的方向箭头。

使用streamplot()方法绘制矢量场:

其中 X、Y 是均匀间隔的网格 [1D 阵列],U 和 V 表示网格上每个点的流速。密度是不行的。每个绘图区域的向量。线宽代表流线的粗细。

下面是一些描述如何使用matplotlib模块绘制矢量场的示例:

示例 1:使用matplotlib模块中的quiver()方法绘制单个向量。

Python3
# Import libraries
import numpy as np
import matplotlib.pyplot as plt
 
# Vector origin location
X = [0]
Y = [0]
 
# Directional vectors
U = [2] 
V = [1] 
 
# Creating plot
plt.quiver(X, Y, U, V, color='b', units='xy', scale=1)
plt.title('Single Vector')
 
# x-lim and y-lim
plt.xlim(-2, 5)
plt.ylim(-2, 2.5)
 
# Show plot with grid
plt.grid()
plt.show()


Python3
# Import libraries
import numpy as np
import matplotlib.pyplot as plt
 
# Vector origin location
X = [0]
Y = [0]
 
# Directional vectors
U = [2] 
V = [1] 
 
# Creating plot
plt.quiver(X, Y, U, V, color='b', units='xy', scale=1)
plt.title('Single Vector')
 
# x-lim and y-lim
plt.xlim(-2, 5)
plt.ylim(-2, 2.5)
 
# Show plot with grid
plt.grid()
plt.show()


Python3
# Import required modules
import numpy as np
import matplotlib.pyplot as plt
 
# 1D arrays
x = np.arange(-5,5,0.1)
y = np.arange(-5,5,0.1)
 
# Meshgrid
X,Y = np.meshgrid(x,y)
 
# Assign vector directions
Ex = (X + 1)/((X+1)**2 + Y**2) - (X - 1)/((X-1)**2 + Y**2)
Ey = Y/((X+1)**2 + Y**2) - Y/((X-1)**2 + Y**2)
 
# Depict illustration
plt.figure(figsize=(10, 10))
plt.streamplot(X,Y,Ex,Ey, density=1.4, linewidth=None, color='#A23BEC')
plt.plot(-1,0,'-or')
plt.plot(1,0,'-og')
plt.title('Electromagnetic Field')
 
# Show plot with grid
plt.grid()
plt.show()


输出:

示例 2:使用quiver()方法生成多个向量。

蟒蛇3

# Import libraries
import numpy as np
import matplotlib.pyplot as plt
 
# Vector origin location
X = [0]
Y = [0]
 
# Directional vectors
U = [2] 
V = [1] 
 
# Creating plot
plt.quiver(X, Y, U, V, color='b', units='xy', scale=1)
plt.title('Single Vector')
 
# x-lim and y-lim
plt.xlim(-2, 5)
plt.ylim(-2, 2.5)
 
# Show plot with grid
plt.grid()
plt.show()

输出:

示例 3:使用matplotlib模块中的streamplot()方法绘制多个向量。

蟒蛇3

# Import required modules
import numpy as np
import matplotlib.pyplot as plt
 
# 1D arrays
x = np.arange(-5,5,0.1)
y = np.arange(-5,5,0.1)
 
# Meshgrid
X,Y = np.meshgrid(x,y)
 
# Assign vector directions
Ex = (X + 1)/((X+1)**2 + Y**2) - (X - 1)/((X-1)**2 + Y**2)
Ey = Y/((X+1)**2 + Y**2) - Y/((X-1)**2 + Y**2)
 
# Depict illustration
plt.figure(figsize=(10, 10))
plt.streamplot(X,Y,Ex,Ey, density=1.4, linewidth=None, color='#A23BEC')
plt.plot(-1,0,'-or')
plt.plot(1,0,'-og')
plt.title('Electromagnetic Field')
 
# Show plot with grid
plt.grid()
plt.show()

输出: