matplotlib-从剧情中删除未定义的数字

时间:2018-11-14 15:06:09

标签: python matplotlib

我正在尝试使用Python和matplotlib绘制f(x)= 1 / x。目前,我的代码是:

import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return 1/x

t1 = np.arange(-4.0, 4.0, 1)
t2 = np.arange(-4.0, 4.0, 0.02)

figure = plt.figure(1)

ax = figure.add_subplot(111)
ax.tick_params(labeltop = True)
ax.set_ylim([-40,40])

plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')

输出如下:
The output
显然这是不正确的,并且我确定问题是由于Python无法在点x = 0(因为未定义1/0)而计算函数的事实而发生的

是否可以从函数中排除x = 0?

(有一个question与这个差不多,但是我无法用那里的答案解决问题。)

谢谢!

1 个答案:

答案 0 :(得分:1)

这是不正确的。它简单地连接了每个点,并且当x + 0处有一个点位于+无限处而另一处是-无限处时,您将获得连接这两个点的直线。最简单的绘制线条的方法是绘制两个图形:一个用于x <0,另一个用于x> 0:

import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return 1/x

t1a = np.arange(-4.0,     0, 1)
t1b = np.arange(   0,   4.0, 1)
t2a = np.arange(-4.0,     0, 0.02)
t2b = np.arange(   0,   4.0, 0.02)

figure = plt.figure(1)

ax = figure.add_subplot(111)
ax.tick_params(labeltop = True)
ax.set_ylim([-40,40])

plt.plot(t1a, f(t1a), 'bo', t2a, f(t2a), 'k')
plt.plot(t1b, f(t1b), 'bo', t2b, f(t2b), 'k')
plt.show()

导致:

enter image description here