【问题标题】:How to restrict the vector field to a circle of certain radius?如何将矢量场限制在一定半径的圆内?
【发布时间】:2019-12-14 14:08:14
【问题描述】:

我正在绘制有限导线的矢量磁势。合成的矢量场应该是圆形的并且指向上方(z 方向)。我得到的领域是向上的,但它不是圆形的。它看起来像一个正方形。谁能指出我犯的错误。

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np


fig = plt.figure()
ax = fig.gca(projection='3d')

l = 10
x, y, z = np.meshgrid(np.linspace(-1, 1, 20),
                      np.linspace(-1, 1, 20),
                      np.linspace(-1, 1, 3))



u = 0
v = 0
w = np.log(2*l/((x**2 + y**2)**0.5))

ax.quiver(x, y, z, u, v, w, length=0.1, color = 'black')

plt.show()

【问题讨论】:

  • 代码做了它应该做的事情。你想让这个看起来怎么样?
  • 我希望它看起来像矢量来自磁盘,而不是这些正方形。

标签: python python-3.x numpy matplotlib


【解决方案1】:

正如here 指出的那样,您可以使用掩码。

对于您的具体示例,您可以通过计算 xy 平面中的哪些点位于圆内来创建此蒙版:

x, y, z = np.meshgrid(np.linspace(-1, 1, 20),
                      np.linspace(-1, 1, 20),
                      np.linspace(-1, 1, 3))

radius = 1
mask = x**2 + y**2 <= radius

现在应用遮罩

x, y, z = x[mask], y[mask], z[mask]


u = 0
v = 0
w = np.log(2*l/((x**2 + y**2)**0.5))

ax.quiver(x, y, z, u, v, w, length=0.1, color = 'black')

plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    相关资源
    最近更新 更多