python - 询问matplotlib streamplot "The rows of ' x' 必须等于错误”

标签 python matplotlib

我正在尝试绘制(B_x,B_z)场线,代码写在下面。我使用的函数是“streamplot(x,z,Bx,Bz)”。运行后,'x'、'z'、'Bx'、'Bz'的类型为float64,大小为(30L,30L),相等。

但是,运行后会显示范围 (0,1) 的橙色 Canvas 图和“ValueError: The rows of 'x' must equal”。代码有什么问题?

import numpy as np
import math as m
from matplotlib.pyplot import cm # color map
import matplotlib.pyplot as plt

r_E=6.4*10**6 # (m)
B0=0.0001

Earth = plt.Circle((0, 0), 6400000,color='orange')

plot=plt.figure()
x,z=np.mgrid[-9000000:9000000:30j, -9000000:9000000:30j]
r=np.sqrt(np.add(np.square(x),np.square(z)))
ax=plot.gca()
ax.add_patch(Earth)

B_x=[]
B_z=[]
for i in range(len(x)):
    bx=[]
    bz=[]
    for j in range(len(x)):
        bx.append(B0*(r_E/r[i,j])**3*(x[i,j]*z[i,j]/r[i,j]**2)*(1-( 3+x[i,j]/(x[i,j]**2)**(1.0/2) )/8))
        bz.append(B0*(r_E/r[i,j])**3/r[i,j]**2*(z[i,j]**2-(x[i,j]**2)*(3+x[i,j]/(x[i,j]**2)**(1.0/2))/8))
    B_x.append(bx)
    B_z.append(bz)

Bx=np.asarray(B_x)
Bz=np.asarray(B_z)

ax.streamplot(x,z,Bx,Bz)
plt.show(plot)

最佳答案

更改为

    streamplot(z,y,Bz,Bx)

我在非线性系统中遇到了同样的问题,我不知道为什么会抛出这个错误,但是当我反转变量时它起作用了(这是因为另一个图形使用了网格网格)。

关于python - 询问matplotlib streamplot "The rows of ' x' 必须等于错误”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38389001/

相关文章:

python - 在常见的实现中,realloc 实际上会缩小缓冲区吗?

python - Django prefetch_related 缓存不反射(reflect)更改

python - Graphviz 重叠边缘标签

python - 在 plt.scatter 中明确设置颜色条箱

python - 图,穿过 y 轴

Python pandas 数据框,逐行聚合直至停止标准

python - 将物理地址转换为地理位置纬度和经度

python - 由于 Figsize,x 标签位于我的图形之外

python - 在 matplotlib 用户界面中更新颜色条而不重置缩放历史记录

python - 如何将热图刻度标签映射到值并将这些值添加为图例