python - 更改箭袋的轴刻度 - Python

标签 python vector matplotlib

我正在使用 Matplotlibquiver 方法绘制矢量场。

用于存储此向量的数组的维度为 x * y,但我正在使用从 -22 变化的空间>.

到目前为止,为了绘制矢量场,我有以下方法:

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 = 0y = 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 方法配合使用,例如 imshowstreamplot

但这就是我用这段代码得到的:

enter image description here

这不是我想要的。

所以,我想知道如何执行我在此处解释的操作来更改轴刻度。

提前谢谢您。

最佳答案

有趣的是,我昨天刚刚了解到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]Y[i,j]处。

结论:

你需要像这样调用quiver

quiver(values_x, values_y, vector_field_x, vector_field_y)

可能您已经这样做了,但您可以使用 numpy.meshgrid 获取 values_xvalues_y功能。

matplotlib example对于 quiver 函数可能也很有用。

希望对您有帮助!

关于python - 更改箭袋的轴刻度 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23963869/

相关文章:

python - 将 QChartView 插入 ui

c++ - std::move 不适用于 RValue 引用函数

python - 如何在matplotlib中绘制范围条形图?

Python 的文本转语音转换失败

python - 从 1 到数字 n 进行大小 k 的所有组合

haskell - 如何在 Edward Kmett 的 "Linear"库中使用可变大小向量?

python - 如何使用 Seaborn 在同一图上绘制多个直方图

python - 将 matplotlib 文本置于右上角

python - 使用 Flask 和原生 Python 日志记录?

r - 计算连续值之间的差异或与 R 中向量中最新的非 NA 值的差异