绘制多个图,但在 Python 中具有偏移范围 [英] Plotting multiple plots, but with offset ranges in Python

查看:37
本文介绍了绘制多个图,但在 Python 中具有偏移范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I would like to plot a function of e and nu, where e is the eccentricity and nu the true anomaly. I am only looking at elliptical orbits so 0<e<1. However, when I try to plot them against each other, I have a shape error:

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

ValueError: operands could not be broadcast together with shapes (10) (5000)

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

I know this is because I only want 10 spaces for the eccentricity, but is there a way around this?

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()

推荐答案

我认为这是您要尝试做的事情:

I think this is what you are trying to do:

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 广播是您的朋友;)

如果你想变得真正花哨:

If you want to get really fancy:

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()

这篇关于绘制多个图,但在 Python 中具有偏移范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆