在 Python 中绘制多个图,但具有偏移范围

2024-01-23

我想绘制 e 和 nu 的函数,其中 e 是偏心率,nu 是真正的异常。我只看椭圆轨道所以0<e<1。然而,当我尝试将它们相互绘制时,出现形状错误:

ValueError:操作数无法与形状一起广播 (10) (5000)

我知道这是因为我只想要 10 个偏心空间,但是有办法解决这个问题吗?

import numpy as np

e = np.arange(0, 1, 0.1)

vvals = [[] for i in range(len(e))]
nu = np.linspace(0, 2 * np.pi, 5000)


for i in e:
    for j in nu:
        i = float(i)
        j = float(j)
        v = np.sqrt(e ** 2 + 2 * e * np.cos(nu) + 1)
        i = int(i)
        vvals[i].append(v)


for i in e:
    pylab.plot(nu, vvals[i])


pylab.show()

我认为这就是你正在尝试做的事情:

import numpy as np

e = np.arange(0, 1, 0.1)
vvals = []
nu = np.linspace(0, 2 * np.pi, 5000)
for i in e:
    v = np.sqrt(i ** 2 + 2 * i * np.cos(nu) + 1)
    vvals.append(v)

for v in vvals:
    pylab.plot(nu, v)

pylab.show()

numpy广播是你的朋友;)

如果你想变得非常奇特:

import numpy as np

e = np.arange(0, 1, 0.1).reshape(-1, 1)
nu = np.linspace(0, 2 * np.pi, 5000).reshape(1, -1)
vvals = np.sqrt((e ** 2) * np.ones(nu.shape) + 2 * e * np.cos(nu) + 1)

for v, _e in zip(vvals, e.ravel()):
    pylab.plot(nu.ravel(), v, label=str(_e))

pylab.legend()    

pylab.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中绘制多个图,但具有偏移范围 的相关文章

随机推荐