Python-Matplotlib 用无穷大的 f(x) 值作图

Python-Matplotlib Plotting with infiniite f(x) values

我正在尝试在 matplotlib 中绘制 tan 函数。 当插入的值为 pi/2 时,tan 函数会无穷大。问题是我不知道如何处理 Matplotlib 中的无限数字,或者反过来,无限小的范围才能绘制它。其中一个问题是向下的线,试图连接顶部绘制的最后一个点,以及 pi/2

之后的第一个点
import matplotlib.pyplot as plt
import numpy

x_values = numpy.linspace(-5,5,num=1000)
y_values = numpy.tan(x_values)
plt.plot(x_values, y_values)
plt.show()

这是输出:

这是因为此函数需要绘制 1000 个点,而不是无限个点,但它不会创建我想要的图像,我想要一个类似于图形计算器生成的图像。 我能做什么?

如何绘制不连续函数

import numpy as np
from numpy import pi, nan
import matplotlib.pyplot as plt

start, stop, num, eps = -5, 5, 200, 0.003
data = np.linspace(start, stop, num)

shift = (data + pi/2) % pi
data = data[(eps < shift) & (shift < pi - eps)]
asymptotes = np.r_[start:stop:pi] - (start + pi/2) % pi + pi

xx = np.r_[data, asymptotes]
yy = np.r_[np.tan(data), [nan]*len(asymptotes)]
order = xx.argsort()   

xlim = [start, stop]
ylim = [-25, 25]

plt.figure(figsize=(8,12))
plt.xlim(xlim)
plt.ylim(ylim)

plt.plot([asymptotes]*2, 
         [[i]*len(asymptotes) for i in ylim], 
         'k--', linewidth=1)

plt.plot(xx[order], yy[order])
plt.show()
  • asymptotes - 正切函数的不连续点
  • eps - 不连续点周围排除邻域的半径
  • shift - 从数据到左边最近断点的距离