首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用matplotlib流图

使用matplotlib流图
EN

Stack Overflow用户
提问于 2015-05-21 16:07:17
回答 1查看 902关注 0票数 0

我在使用matplotlib流图时有问题。我想使用存储在numpy数组中的坐标(x,y,z)中的三维向量场,并用流图绘制它的切片。

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

所以我试了一下:

代码语言:javascript
复制
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放进去,我得到的东西看起来就像!我试图反演向量的顺序,但这是无用的!

你们中有人明白这个问题吗?谢谢

加布里埃尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-22 19:59:04

一个朋友告诉我

关于流图的文档:

代码语言:javascript
复制
    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是转置的。

所以我使用了numpy.transpose( ),一切都成功了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30378999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档