更改箭头的轴刻度 - Python

时间:2014-05-30 21:48:54

标签: python vector matplotlib

我使用 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 数组,这给了我输出:

enter image description here

但为了生成此向量字段,我将数据集中在 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

但这就是我对这段代码的看法:

enter image description here

这不是我想要的。

所以,我想知道如何执行我在这里解释的更改轴刻度。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

有趣的是,我刚刚了解了quiver昨天......:)

根据quiver documentation,该函数可以接受2到5个参数......

使用该函数的最简单方法是将两个具有相同数量的元素UV的数组传递给它。然后,matplotlib将为数组中的每个元素绘制一个箭头。具体而言,对于每个元素i,j,您将获得一个箭头放置在i,j ,并且组件由U[i,j]V[i,j]定义。 这就是你发生的事情

更完整的语法是使用相同数量的元素XYUV传递我们的数组。同样,您将获得每个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也可能有用。

我希望它有所帮助!