怎么⽤python画sin函数图像_Python绘制正余弦函数图像的⽅
法
今天打算通过绘制正弦和余弦函数,从默认的设置开始,⼀步⼀步地调整改进,让它变得好看,变成我们初⾼中学习过的图象那样。通过这个过程来学习如何进⾏对图表的⼀些元素的进⾏调整。
01. 简单绘图
matplotlib有⼀套允许定制各种属性的默认设置。你可以⼏乎控制matplotlib中的每⼀个默认属性:图像⼤⼩,每英⼨点数,线宽,⾊彩和样式,⼦图(axes),坐标轴和⽹格属性,⽂字和字体属性,等等。
安装
pip install matplotlib
虽然matplotlib的默认设置在⼤多数情况下相当好,你却可能想要在⼀些特别的情形下更改⼀些属性。
from pylab import *
x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(x), np.sin(x)
plot(x,C)
plot(x,S)
show()
show image
02. 设置基本元素
这边的基本元素主要有⼏下⼏点:
线的颜⾊,粗细,和线型 刻度和标签 还有图例
代码⽐较简单,基本上在我的第⼀讲内容⾥都讲过了。
import numpy as np
from matplotlib import pyplot as plt
rescue形容词plt.figure(figsize=(10,6), dpi=80)
x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(x), np.sin(x)
# 设置线的颜⾊,粗细,和线型
plt.plot(x, C, color="blue", linewidth=2.5, line, label=r'$sin(x)$')
php开发小程序视频plt.plot(x, S, color="red", linewidth=2.5, line, label=r'$cos(x)$')
# 如果觉得线条离边界太近了,可以加⼤距离
plt.xlim(x.min()*1.2, x.max()*1.2)
plt.ylim(C.min()*1.2, C.max()*1.2)
# 当前的刻度并不清晰,需要重新设定,并加上更直观的标签
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
[r'$-1$', r'$0$', r'$1$'])
# 添加图例
plt.legend()
plt.show()
show image
03. 移动轴线
还记得我们在初⾼中学习的三⾓函数图象,可不是这样,它应该是有四个象限的。⽽这⾥却是⼀个四四⽅⽅的图表。所以接下来,我们要做的就是移动轴线,让它变成我们熟悉的样⼦。
我们只需要两轴线(x和y轴),所以我们需要将顶部和右边的轴线给隐藏起来(颜⾊设置为None即可)。
# a(),全称是get current axis
ax = a()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 由于我们移动的是左边和底部的轴,所以不⽤设置这两个也可以
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 指定data类型,就是移动到指定数值
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
关于 set_position() 这个函数中的data是啥意思?我查了下官⽹。解释如下
然后最后发现,上⾯的写法可以⽤⼀定更简洁的⽅式设置,是等价的。
ax.spines['bottom'].set_position('zero')
ax.spines['left'].set_position('zero')
show image
04. 添加注释
现在的图形部分已经成型,接下让我们现在使⽤annotate命令注解⼀些我们感兴趣的点。
我们选择 2π/3 作为我们想要注解的正弦和余弦值。我们将在曲线上做⼀个标记和⼀个垂直的虚线。然后,使⽤annotate命令来显⽰⼀个箭头和⼀些⽂本。
t = 2*np.pi/3
# 利⽤plt.plot绘制向下的⼀条垂直的线,利⽤plt.scatter绘制⼀个点。
plt.plot([t,t],[s(t)], color ='blue', linewidth=2.5, line)
为什么老是显示服务器错误仓库管理系统论文plt.scatter([t,],[np.cos(t),], 50, color ='blue')
plt.annotate(r'$sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t, np.sin(t)), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrow, connection))
# 利⽤plt.plot绘制向上的⼀条垂直的线,利⽤plt.scatter绘制⼀个点。
plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, line)
plt.scatter([t,],[np.sin(t),], 50, color ='red')
plt.annotate(r'$cos(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t, np.cos(t)), xycoords='data',
xytext=(-90, -50), textcoords='offset points', fontsize=16,
arrowprops=dict(arrow, connection))
在这⾥,你可能会对 plt.annotate 这个函数的⽤法,有所陌⽣。这⾥也解释⼀下。
第⼀个参数,就是注释内容; 第⼆个参数, xy ,就是对哪⼀点进⾏注释; 第三个参数, xycoords ,指定类型,data 是说基于数值来定位; 第四个参数, xytext ,是注释的位置,结合第五个参数,就是根据偏移量来决定注释位置; 第五个参数, textcoords ,值为offset points,就是说是相对位置; 第六个参数, fontsize ,注释⼤⼩; 第七个参数, arrowprops ,对箭头的类型的⼀些设置。
show image
python代码画图案05. 完整代码
以上都是对⽚段代码进⾏解释,这⾥放出完整的代码matlab读取excel数据某一行
import numpy as np
from matplotlib import pyplot as plt
plt.figure(figsize=(10,6), dpi=80)
x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(x), np.sin(x)
# 设置线的颜⾊,粗细,和线型
plt.plot(x, C, color="blue", linewidth=2.5, line, label=r'$sin(x)$')
plt.plot(x, S, color="red", linewidth=2.5, line, label=r'$cos(x)$')
# 如果觉得线条离边界太近了,可以加⼤距离
plt.xlim(x.min()*1.2, x.max()*1.2)
plt.ylim(C.min()*1.2, C.max()*1.2)
# 当前的刻度并不清晰,需要重新设定,并加上更直观的标签
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
[r'$-1$', r'$1$'])
# 添加图例
plt.legend(loc='upper left')
# a(),全称是get current axis
ax = a()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 由于我们移动的是左边和底部的轴,所以不⽤设置这两个也可以
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 指定data类型,就是移动到指定数值
# ax.spines['bottom'].set_position('zero')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
t = 2*np.pi/3
# 利⽤plt.plot绘制向下的⼀条垂直的线,利⽤plt.scatter绘制⼀个点。
plt.plot([t,t],[s(t)], color ='blue', linewidth=2.5, line)
plt.scatter([t,],[np.cos(t),], 50, color ='blue')
plt.annotate(r'$sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t, np.sin(t)), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrow, connection))
# 利⽤plt.plot绘制向上的⼀条垂直的线,利⽤plt.scatter绘制⼀个点。
plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, line)
plt.scatter([t,],[np.sin(t),], 50, color ='red')
plt.annotate(r'$cos(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t, np.cos(t)), xycoords='data',
xytext=(-90, -50), textcoords='offset points', fontsize=16,
arrowprops=dict(arrow, connection))
plt.show()
绘制抛物线:
X1=np.linspace(-4,4,100,endpoint=True)
plt.plot(X1,(X1**2)/9)
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持脚本之家。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论