1

如何删除渐近线?

import numpy as np

e = 1.26
beta = .705 * np.pi
rph = 7000
re = 6378

def r(nuh):
    return rph * (1 + e) / (1 + e * np.cos(nuh + beta))


theta = np.linspace(-np.pi, np.pi, 50000)

fig2 = pylab.figure()
ax2 = fig2.add_subplot(111)
ax2.plot(r(theta) * np.cos(theta), r(theta) * np.sin(theta))
ax2.plot(rph * np.cos(theta), rph * np.sin(theta), 'r')
#  adding the Earth                                                                 
earth2 = pylab.Circle((0, 0), radius = re, color = 'b')
ax2.add_patch(earth2)
pylab.xlim((-50000, 100000))
pylab.ylim((-50000, 100000))
pylab.show()

带渐近线

4

1 回答 1

3

正如您在此处看到的,将分歧点设置为np.nan将导致它们不被绘制。

在你的问题中,它是r(theta)分歧的。以通常的方式定义rand theta,但是,您想将 的极值设置r(theta)np.nan

为此,首先创建一个数组,然后将其极值更改为np.nan

rt = r(theta)
ext = [np.argmin(rt), np.argmax(rt)]
rt[ext] = np.nan

现在,请务必使用修改后的rt数组而不是原始函数进行绘图:

ax2.plot(rt * np.cos(theta), rt * np.sin(theta))

没有渐近线:)

于 2013-05-08T20:15:17.680 回答