我使用 Matplotlib 的箭袋方法绘制矢量场。
我存储此向量的数组的维度为 x * y ,但我使用的空间从 -2 到 2 < /强>
到目前为止,为了绘制矢量场我有这个方法:
import matplotlib.pyplot as plt
def plot_quiver(vector_field_x, vector_field_y, file_path):
plt.figure()
plt.subplots()
plt.quiver(vector_field_x, vector_field_y)
plt.savefig(file_path + '.png')
plt.close()
例如,对于 10 x 10 数组,这给了我输出:
但为了生成此向量字段,我将数据集中在 x = 0 , y = 0 ,x和y范围从 -2 到 2 。 然后,我想在此模式下绘制图像的轴。
作为标准方法,我尝试执行以下操作:
def plot_quiver(vector_field_x, vector_field_y, file_path):
plt.figure()
fig, ax = plt.subplots()
ax.quiver(vector_field_x, vector_field_y)
ax.set_xticks([-2, 0, 2])
ax.set_yticks([-2, 0, 2])
plt.savefig(file_path + '.png')
plt.close()
这通常适用于 Matplotlib 方法,例如 imshow 和 streamplot 。
但这就是我对这段代码的看法:
这不是我想要的。
所以,我想知道如何执行我在这里解释的更改轴刻度。
提前谢谢。
答案 0 :(得分:1)
有趣的是,我刚刚了解了quiver
昨天......:)
根据quiver documentation,该函数可以接受2到5个参数......
使用该函数的最简单方法是将两个具有相同数量的元素U
和V
的数组传递给它。然后,matplotlib将为数组中的每个元素绘制一个箭头。具体而言,对于每个元素i,j
,您将获得一个箭头放置在i,j
,并且组件由U[i,j]
和V[i,j]
定义。 这就是你发生的事情
更完整的语法是使用相同数量的元素X
,Y
,U
和V
传递我们的数组。同样,您将获得每个i,j
元素的箭头,其中包含由U[i,j]
和V[i,j]
定义的组件,但这次它们将被放置在坐标X[i,j]
,{ {1}} 强>
您需要致电Y[i,j]
,如
quiver
可能您已经这样做了,但您可以使用numpy.meshgrid
功能获得quiver(values_x, values_y, vector_field_x, vector_field_y)
和values_x
。
values_y
功能的matplotlib example也可能有用。
我希望它有所帮助!