3

pyplot と matplotlib を使用して双曲線を描こうとしています。これは私のコードです:

from __future__ import division

import numpy
import matplotlib.pyplot as pyplot

x = numpy.arange(0, 1000, 0.01)
y = [10 / (500.53 - i) for i in x]
pyplot.plot(x, y, 'b')
pyplot.axis([0, 1000, -10, 10])

pyplot.show()

次のグラフが生成されます。

双曲線

グラフを変更して、垂直漸近線を下る線を削除するにはどうすればよいですか?

4

1 に答える 1

1

プロットする前に、次の行を追加します。

 threshold = 1000 # or a similarly appropriate threshold
 y = numpy.ma.masked_less(y, -1*threshold) 
 y = numpy.ma.masked_greater(y, threshold).

そして、

pyplot.plot(x, y, 'b')
pyplot.axis([0, 1000, -10, 10])
pyplot.show()

いつものように。

また、numpy 配列を使用しているため、計算にリスト内包表記は必要ないことに注意してください。y

In [12]: %timeit y = [10 / (500.53 - i) for i in x]
1 loops, best of 3: 202 ms per loop

In [13]: %timeit y = 10 / (500.53 - x)
1000 loops, best of 3: 1.23 ms per loop

お役に立てれば。

于 2012-12-14T16:48:05.047 に答える