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
- 从数据到左边最近断点的距离
我正在尝试在 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
- 从数据到左边最近断点的距离