首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python绘制切线图(matplotlib)

问用Python绘制切线图(matplotlib)
EN

Stack Overflow用户
提问于 2014-01-18 13:24:34
回答 2查看 9.3K关注 0票数 4

今天,我决定用Python编写简单的程序,以便在考试前进行练习。首先,我想画罪恶和因为阴谋,这不是那么困难。但后来,我决定挑战自己,画出切线。

代码语言:javascript
复制
import pylab as p

x= p.arange(-1.0,1.0,0.1)
y= (p.sin(2*p.pi*x)) / (p.cos(2*p.pi*x))

p.plot(x,y,'g-',lw=1)
p.show()

它回来了..。呃..。这是:

​

​

正如你所看到的,它看起来更像ECK图,而不是切线图。有人知道怎么回事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-18 13:38:28

如果增加x中的点数,

代码语言:javascript
复制
import pylab as p
import numpy as np
x = p.linspace(-1.0, 1.0, 1000)
y = (p.sin(2 * p.pi * x)) / (p.cos(2 * p.pi * x))
p.plot(x, y, 'g-', lw=1)
p.show()

你会得到这样的东西:

​

注意y-range有多大。Matplotlib无法显示切线曲线中的许多小值,因为范围太大了。

通过忽略渐近线附近极大的值,可以改善地块。用Paul's workaround来处理无症状,

代码语言:javascript
复制
import pylab as p
import numpy as np
x = p.linspace(-1.0, 1.0, 1000)
y = (p.sin(2 * p.pi * x)) / (p.cos(2 * p.pi * x))

tol = 10
y[y > tol] = np.nan
y[y < -tol] = np.nan

p.plot(x, y, 'g-', lw=1)
p.show()

你会得到

​

​

票数 6
EN

Stack Overflow用户

发布于 2014-01-18 13:38:35

代码语言:javascript
复制
import pylab as p

x= p.arange(-1.0,1.0,0.01)  # <- 0.01 step size.
y= (p.sin(2*p.pi*x)) / (p.cos(2*p.pi*x))
# y = p.tan(2*p.pi*x)
p.plot(x,y,'g-',lw=1)
p.ylim([-4, 4]) # <- Restricting the ylim so we don't see the ~inf values. 
p.show()

如果不设置ylim,这将是结果。(数值接近无穷大)

​

​

结果与设置ylim。

​

​

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21204740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档