Python 如何用pyplot和numpy绘制tan(x)

Python 如何用pyplot和numpy绘制tan(x),python,discrete-mathematics,Python,Discrete Mathematics,代码: import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 10000) plt.plot(x, np.tan(x)) plt.show() 预期结果: import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 10000) plt.plot(x, np.tan(x)) plt.show() 我得到的结果: import

代码:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10000)
plt.plot(x, np.tan(x))
plt.show()
预期结果:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10000)
plt.plot(x, np.tan(x))
plt.show()

我得到的结果:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10000)
plt.plot(x, np.tan(x))
plt.show()

我认为有两个问题。第一个是关于
np.linspace
,第二个是关于绘图

np.linspace
默认返回给定范围内的50个元素。因此,在
(01000)
上绘制50个点,这意味着元素的间距非常大。而且,这个范围对切线函数没有太大意义。我会用更小的,大概+/-2*pi

第二个问题是y轴。切线函数以pi/2的倍数迅速发散到无穷大,这意味着通过绘制完整的y范围,您将错过许多有趣的行为。下面的代码应该可以解决这些问题

x = np.linspace(-2 * np.pi, 2 * np.pi, 1000)
plt.plot(x, np.tan(x))
plt.ylim(-5, 5)
您应该看到如下内容:

bnaecker对.linspace的建议和

import matplotlib.pyplot as plt
import numpy as np

# .linspace arguments are (start, end, number_of_steps)
x = np.linspace(-2 * np.pi, 2 * np.pi, 1000)
y = np.tan(x)

# This operation inserts a NaN where the difference between successive points is negative
# NaN means "Not a Number" and NaNs are not plotted or connected
# I found this by doing a search for "How to plot tan(x) in matplotlib without the connecting lines between asymtotes"
y[:-1][np.diff(y) < 0] = np.nan

# show grid
plt.grid()

plt.xlabel("x")
plt.ylabel("$tan(x)$")

# Set the x and y axis cutoffs
plt.ylim(-10,10)
plt.xlim(-2 * np.pi, 2 * np.pi)

# x_labels in radians
# For a more programmatic approach to radians, see https://matplotlib.org/3.1.1/gallery/units/radian_demo.html
radian_multiples = [-2, -3/2, -1, -1/2, 0, 1/2, 1, 3/2, 2]
radians = [n * np.pi for n in radian_multiples]
radian_labels = ['$-2\pi$', '$-3\pi/2$', '$\pi$', '$-\pi/2$', '0', '$\pi/2$', '$\pi$', '$3\pi/2$', '$2\pi$']

plt.xticks(radians, radian_labels)

plt.title("$y = tan(x)$", fontsize=14)
plt.plot(x, y)
plt.show()
导入matplotlib.pyplot作为plt
将numpy作为np导入
#.linspace参数为(开始、结束、步数)
x=np.linspace(-2*np.pi,2*np.pi,1000)
y=np.tan(x)
#此操作将插入一个NaN,其中连续点之间的差值为负值
#NaN表示“不是一个数字”,并且NaN不被绘制或连接
#我通过搜索“如何在matplotlib中绘制tan(x),而不使用asymtotes之间的连接线”找到了这一点
y[:-1][np.diff(y)<0]=np.nan
#显示网格
plt.grid()
plt.xlabel(“x”)
plt.ylabel($tan(x)$)
#设置x轴和y轴的截止值
plt.ylim(-10,10)
plt.xlim(-2*np.pi,2*np.pi)
#x_标签(弧度)
#有关弧度的更多编程方法,请参见https://matplotlib.org/3.1.1/gallery/units/radian_demo.html
弧度乘以=[-2,-3/2,-1,-1/2,0,1/2,1,3/2,2]
弧度=[n*np.pi表示n的弧度乘以]
弧度标签=['$-2\pi$'、'$-3\pi/2$'、'$\pi$'、'$-\pi/2$'、'0'、'$\pi/2$'、'$\pi$'、'$3\pi/2$'、'$2\pi$']
plt.xticks(弧度、弧度标签)
plt.title(“$y=tan(x)$”,fontsize=14)
平面图(x,y)
plt.show()

谢谢,增加linspace中的n个元素会有所帮助。