用python画三角函数

Posted 波波波波波

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python画三角函数相关的知识,希望对你有一定的参考价值。

Pyplot

http://www.labri.fr/perso/nrougier/teaching/matplotlib/

pyplot提供了一个方便的matplotlib基于对象库的借口,是模仿了matlab,因此,在pyplot中的很多命令和参数,都和matlab相似。

简单的画图simple plot

我们想在同一个图中划出一个cos和sin函数图,第一步是获取cos和sin的数据,构建函数

import numpy as np

X = np.linspace(-np.pi, np.pi, 256,endpoint=True)

C,S = np.cos(X), np.sin(X)

定义了一个numpy的数组X,从-π到π,共256个值,同时定义了C和S,也就是两个三角函数,也有256个值。也是一个数组,也可以说是列表。

 

在matplotlib中,有一系列的默认设置,用来自定义各种属性。可以通过配置各种属性,来调整整个图,比如表格大小、像素、线的宽度,颜色和风格,线轴、坐标、表格属性、文本和字体属性。在很多情况下,默认的设置都是比较好用的,如果是有特殊的需求,可以修改这些属性值。

开始画图。

from matplotlib import pyplot as plt

import numpy as np

x = np.linspace(-np.pi,np.pi,256,endpoint=True)

y = np.sin(x)

z = np.cos(x)

 

plt.plot(x,y)

plt.plot(x,z)

 

plt.show()

 

实例化默认值

在下面的脚本中,可以通过修改所有的表格属性值,来影响图标的展出。而在上面的图中,这些值都被明确的设定为默认值,现在可以通过交互式的操作,来看一下这些值影响的效果。

下面是线条属性值和线条样式。

from matplotlib import pyplot as plt
import numpy as np
#
创建一个6×8的图框,像素为100
plt.figure(figsize=(6,8),dpi=100)
#
创建一个子图,网格为1×1
plt.subplot(111)

x = np.linspace(-np.pi,np.pi,256,endpoint=True)
y = np.sin(x)
z = np.cos(x)
#
画图,使用不同的颜色和线条
plt.plot(x,y,color=\'blue\',linewidth=1.0,linestyle=\'-\')
plt.plot(x,z,color=\'red\',linewidth=1.0,linestyle=\'-\')
#
设置x轴的范围
plt.xlim(-4,4)
#
设置x轴的标尺刻度,从-44,取9个值
plt.xticks(np.linspace(-4,4,9,endpoint=True))

#
设置y轴的范围
plt.ylim(-1,1)
#
设置y轴的标尺刻度,从-11,取5个值
plt.yticks(np.linspace(-1,1,5,endpoint=True))
plt.show()

 

画出来的图如下所示:

第一步:修改线条颜色,cos线条是蓝色,sin线条是红色,设置线条宽度。

plt.plot(x,y,color=\'blue\',linewidth=1.0,linestyle=\'-\')
plt.plot(x,z,color=\'red\',linewidth=1.0,linestyle=\'-\')

 

第二步:修改限制,当前表格的限制有一点紧,可以适当扩充一下表格大小,主要是x和y的两边。

#放大xy
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(y.min()*1.1,y.max()*1.1)

 

第三步:设置刻度值,因为在三角函数的图像中,x轴上面应该显示的是从-π到π的5个值。但是实际上显示的是数字,所以想通过修改这个刻度值,来显示。

#设置x轴的刻度值,显示pi
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi])

第四步:设置刻度值标签,实际上上面的图还是没有显示π。现在是已经均分了x轴,虽然现实的是3.14,最好还是显示π,在设置刻度值的时候,在第二个参数中也提供了对应的标签。

plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r\'$-\\pi$\',r\'$-\\pi/2$\',r\'$0$\',r\'$\\pi/2$\',r\'$\\pi$\'])
plt.yticks([-1,0,1],[r\'$-1$\',r\'$0$\',r\'$1$\'])

两个参数,将第一个参数值,用第二个参数来显示

第五步:移动spines

Spine是一组线,连接了轴心刻度,在数据区域的边界,可以放置在任意位置,目前是防止在轴心的边界上了。需要改变一下,移动到中间,坐标系有四个象限,放弃了顶部和右侧的部分,也就是轮廓。实际上意思是说,在这个图里面,spine是最外侧的4条线,将数据图像封闭在其中。通过移动spine,让坐标系的中心在原点,然后将上侧和右侧的spine删除,也就是 取消颜色。然后将底部和左侧的spine,移动到数据为0的区域。

有4个spine,分别是top,bottom,right和left,分别对应封闭这个数据图形的4个边。需要修改的代码如下:

#移动边界线,构建坐标系,原点为0
ax = plt.gca()#
获取当前轴线实例
ax.xaxis.set_ticks_position(\'bottom\')#x轴线,使用spine中的bottom线
ax.yaxis.set_ticks_position(\'left\')#y轴线,使用spine中的left线
ax.spines[\'bottom\'].set_position((\'data\',0))#bottom线的位置设置为数据为0的位置
ax.spines[\'left\'].set_position((\'data\',0))#left线的位置设置为数据为0的位置
ax.spines[\'top\'].set_color(\'none\')#top线的颜色设置为无
ax.spines[\'right\'].set_color(\'none\')#right线的颜色设置为无

第六步:增加图例

在图的左上角增加图例,需要在plot方法中增加关键字label,然后这个关键字会被在legend中调用。

#增加图例
plt.plot(x,y,label=\'Sin(x)\')
plt.plot(x,z,label=\'Cos(x)\')
plt.legend(loc=\'upper left\')#
将图例放在左上角

 

第七步:注释特定点

通过注释命令,可以为特定的点增加注释,也就是在图中标出这些特定的点,假如要在途中,为2π/3标注出sin和cos的值。需要在曲线上,画一条垂直的虚线,然后通过箭头,在图上表示出来。

#在图上增加标注信息
t = 2*np.pi/3
plt.plot([t,t],[0,np.cos(t)], color =\'blue\', linewidth=1.5, linestyle="--")
plt.scatter([t,],[np.cos(t),], 50, color =\'blue\')

plt.annotate(r\'$\\cos(\\frac{2\\pi}{3})=\\frac{\\sqrt{3}}{2}$\',
xy=(t, np.cos(t)), xycoords=\'data\',
xytext=(+10, +30), textcoords=\'offset points\', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

 

以上是关于用python画三角函数的主要内容,如果未能解决你的问题,请参考以下文章

如何用python画钝角三角形

用python画函数图像

python两个函数图像怎么分开画

用Python或MATLAB如何画三元平方和函数曲线???

怎么用python画三角形并填色?以及画五角星并且填色?(急!!!)

MATLAB中怎么用copyobj函数画出3个legend?或者画出多个legend的方法?我这边只能画出两个legend