Python matplotlib中的streamplot关心坐标的顺序吗



我需要使用matplotlib中的streamplot函数,坐标为x,p,顺序如下代码所示。

import numpy as np
import matplotlib.pyplot as plt
size = 2
x, p = np.mgrid[-size:size:100j, -size:size:100j]
x_force = p
p_force = x**3
fig = plt.figure()
ax = fig.gca()
ax.streamplot(x, p, x_force, p_force, density=[0.5, 1])
plt.show()

这会产生一个错误:ValueError: The rows of 'x' must be equal。令人惊讶的是,更改流图中x和p的顺序解决了这个问题。

ax.streamplot(p, x, p_force, x_force, density=[0.5, 1])

为什么会发生这种事?如何按照我选择的顺序绘制坐标图?

在meshgrid命令中更改x和p的顺序可以解决问题:

p, x = np.mgrid[-size:size:100j, -size:size:100j]

最新更新