python - 在python中创建流图,ValueError:'x'的行必须相等
问题描述
我有一个向量场:
...但是当我想绘制相关的流图时,我得到一个错误:
ValueError:“x”的行必须相等
这是我的代码:
import matplotlib.pyplot as plt
import numpy as np
NY = 20; ymin = -2.; ymax = 2.
dy = (ymax -ymin )/(NY-1.)
NX = NY
xmin = -2.; xmax = 2.
dx = (xmax -xmin)/(NX-1.)
y = np.array([ ymin + float(i)*dy for i in range(NY)])
x = np.array([ xmin + float(i)*dx for i in range(NX)])
x, y = np.meshgrid( x, y, indexing = 'ij', sparse = False)
Fx = np.cos(x + 2*y)
Fy = np.sin(x - 2*y)
F = np.array([Fx, Fy])
# plotting the vectors
plt.quiver(x,y,Fx,Fy)
# Plotting stream plot
plt.streamplot(x, y, Fx, Fy)
plt.show()
有谁知道为什么?我检查了尺寸,但它们似乎和我一样......
编辑:
来自特伦顿麦金尼的评论部分:
“注意这个答案中的xx和yy 。每一行都是一样的,但是每一行的值都在增加。你每一行的值都是一样的,但是每一行都在增加。”
... 我试过:
plt.streamplot(np.transpose(x), np.transpose(y), Fx, Fy)
但如您所见,流图不正确。
解决方案
感谢 TrentonMcKinney 的评论,我意识到问题所在:
就我而言:
我的每一行中的值都是相同的,但每一行都在增加。
但我需要streamplot
工作的是:
每一行都是一样的,但是每一行的值都在增加。
所以我indexing = 'ij'
改为= 'xy'
:
x, y = np.meshgrid( x, y, indexing = 'xy', sparse = False)
完整代码:
import matplotlib.pyplot as plt
import numpy as np
NY = 20; ymin = -2.; ymax = 2.
dy = (ymax -ymin )/(NY-1.)
NX = NY
xmin = -2.; xmax = 2.
dx = (xmax -xmin)/(NX-1.)
y = np.array([ ymin + float(i)*dy for i in range(NY)])
x = np.array([ xmin + float(i)*dx for i in range(NX)])
x, y = np.meshgrid( x, y, indexing = 'xy', sparse = False)
Fx = np.cos(x + 2*y)
Fy = np.sin(x - 2*y)
F = np.array([Fx, Fy])
# plotting the vectors
plt.quiver(x,y,Fx,Fy)
# Plotting stream plot
plt.streamplot(x, y, Fx, Fy)
plt.show()
推荐阅读
- python - 估计器输入函数随机噪声处理
- python - 在继承的类中执行父方法
- functional-programming - SICP Ex 1.3 错误;句法关键字不能用作表达式:#[keyword-value-item 13]
- elixir - Elixir 中的快速不区分大小写排序
- c# - 调用 DownloadDataTaskAsync() 时,底层连接已关闭
- python - 找不到 Django 自定义命令对象 ID
- c++ - 控制台应用程序控制台窗口 - Visual C++
- android - 如何通过 ADB 在 DPs 中查找设备的尺寸
- acumatica - 保存数据后,数据必须稳定且不可通过单击网格中的删除按钮删除。有人可以建议吗?
- javascript - Vuejs 2.x单击非ul链接时如何删除活动类