我正在使用 Matplotlib 的 quiver 方法绘制矢量场。
用于存储此向量的数组的维度为 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。
但这就是我用这段代码得到的:
这不是我想要的。
所以,我想知道如何执行我在此处解释的操作来更改轴刻度。
提前谢谢您。
最佳答案
有趣的是,我昨天刚刚了解到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]
、Y[i,j]
处。
结论:
你需要像这样调用quiver
quiver(values_x, values_y, vector_field_x, vector_field_y)
可能您已经这样做了,但您可以使用 numpy.meshgrid
获取 values_x
和 values_y
功能。
matplotlib example对于 quiver
函数可能也很有用。
希望对您有帮助!
关于python - 更改箭袋的轴刻度 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23963869/