我正在尝试使用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()
它生成以下图表:
如何修改我的图形以删除沿垂直渐近线运行的那条线?
答案 0 :(得分: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
希望这有帮助。