使用matplotlib streamp

2024-07-04 07:52:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用matplotlib streamplot时遇到问题。我想使用存储在numpy数组中的坐标(x,y,z)中的3d向量场,并用streamplot绘制它的切片。在

为了测试它,我想使用一个向量场,箭头在z>;0区域向上,箭头向下在z<;0区域。在

所以我试了一下:

import numpy as np
import matplotlib.pyplot as plt
from math import * 

max = 100
min = -100


X = np.linspace(min, max, num=100)
Y = np.linspace(min, max, num=100)
Z = np.linspace(min, max, num=100)

N = X.size

#single components in the 3D matrix

Bxa = np.zeros((N, N, N))
Bya = np.zeros((N, N, N))
Bza = np.zeros((N, N, N))


for i, x in enumerate(X):
    for j, y in enumerate(Y):
        for k, z in enumerate(Z):
            Bxa[ i, j, k] = 0.0 #x
            Bya[ i, j, k] = 0.0 #y
            Bza[ i, j, k] = z

#I take a slice close to Y=0
Bx_sec = Bxa[:,N/2,:]
By_sec = Bya[:,N/2,:]
Bz_sec = Bza[:,N/2,:]

fig = plt.figure()
ax = fig.add_subplot(111)
ax.streamplot(X, Z, Bx_sec, Bz_sec, color='b')
ax.set_xlim([X.min(), X.max()])
ax.set_ylim([Z.min(), Z.max()])


plt.show()

但我得到的结果是,如果我把Bza=x放进去的话!我试着颠倒向量的顺序,但没用! the arrows change sign with x, not with z 你们中有人明白这个问题吗?谢谢

加布里埃尔


Tags: inimportnpzerospltsecaxmin
1条回答
网友
1楼 · 发布于 2024-07-04 07:52:47

一个朋友告诉我

streamplot的文档:

    x, y : 1d arrays
        an *evenly spaced* grid.
    u, v : 2d arrays
        x and y-velocities. Number of rows should match length of y, and
        the number of columns should match x.

注意u和v中的行应该匹配y,列应该匹配x。我想您的u和v被转置了。

所以我用了纽比转置()一切正常!在

相关问题 更多 >

    热门问题