绘制多个图,但在 Python 中具有偏移范围 [英] Plotting multiple plots, but with offset ranges in Python
本文介绍了绘制多个图,但在 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屋!
查看全文