首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Matplotlib创建偶极子矢量场图的尝试

用Matplotlib创建偶极子矢量场图的尝试
EN

Stack Overflow用户
提问于 2016-10-16 05:44:55
回答 1查看 3.9K关注 0票数 1

我一直是Mathematica的长期用户,我一直在将各种笔记本电脑转换为python (版本3)。对于绘图,我一直在使用matplotlib。我遇到了一个障碍,我不确定出了什么问题。

我正在尝试转换以下Mathematica代码:

代码语言:javascript
复制
(* simple electric dipole *)
Ex[x_, y_] := (x + 1)/((x + 1)^2 + y^2) - (x - 1)/((x - 1)^2 + y^2)
Ey[x_, y_] := y/((x + 1)^2 + y^2) - y/((x - 1)^2 + y^2)
StreamPlot[{Ex[x, y], Ey[x, y]}, {x, -3.5, 3.5}, {y, -3.5, 3.5}]

这将生成以下图:

我想用Python代码重现这段代码。

代码语言:javascript
复制
from pylab import *
X,Y = meshgrid( arange(-4,4,.2),arange(-4,4,.2) )
Ex = (X + 1)/((X+1)**2 + Y**2) - (X - 1)/((X-1)**2 + Y**2)
Ey = Y/((X+1)**2 + Y**2) - Y/((X-1)**2 + Y**2)
figure()
Q = quiver( Ex, Ey)
l,r,b,t = axis()
dx, dy = r-l, t-b 
axis([l-0.05*dx, r+0.05*dx, b-0.05*dy, t+0.05*dy])
show()

生成下图:

我还在学习如何在python中绘图,我对如何创建向量场绘图有点不确定。任何洞察力都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-07-07 00:54:08

这个问题是,你在节点的场中有一个非常高的强度,所以箭袋缩放它很差。如果我们使用参数scale=50缩放箭袋,我们会得到图:

但是,如果我们在pyplot中也使用streamplot函数,我们可以得到以下结果:

如果你问我,这是一个好得多的情节。

这是供参考的代码。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

#%% Plot the fields
X,Y = np.meshgrid( np.arange(-4,4,.2), np.arange(-4,4,.2) )
Ex = (X + 1)/((X+1)**2 + Y**2) - (X - 1)/((X-1)**2 + Y**2)
Ey = Y/((X+1)**2 + Y**2) - Y/((X-1)**2 + Y**2)

plt.figure()
plt.streamplot(X,Y,Ex,Ey)
plt.title('streamplot')

plt.figure()
plt.quiver(X,Y,Ex,Ey,scale=50)
plt.title('quiver')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40064532

复制
相关文章

相似问题

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