百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python的matplotlib的三角函数sin和cos的静态作图详解

off999 2024-09-20 22:50 51 浏览 0 评论

1.说明:

1.1 推荐指数:★★★

1.2 基础知识:三角函数sin和cos,在计算机编程中,尤其python中,应用到画圆很重要。

1.3 用通俗易懂的方式,来讲解,三角函数的matplotlib作图,静态图,为以后的画圆打基础。

1.4 为了突出重点,暂时不提中文设置。复习matplotlib作图的基础知识,深入了解sin和cos的关系。

1.5 适合学习人群:小白、学生、老师、爱好作图人员和计算机编程人员阅读。



2.理论:

比如:

r = 1 #假设半径为1

# 0~2π(一圈,一个π是半圈,步长=0.01,步长越小图线越平滑)

a = np.arange(0,2*np.pi,0.01) 

#圆的坐标点与三角函数的关系

x = r*np.cos(a)

y = r*np.sin(a)

#画圆

plt.plot(x,y,color='red')

3.sin正弦函数

3.1 静态:sin-s

3.2 代码:简洁版

#---导出模块---

import matplotlib.pyplot as plt

import numpy as np

#定义坐标关系

x = np.arange(-2*np.pi,2*np.pi,0.1)

y = np.sin(x)

#画线

plt.plot(x,y,color='blue')

plt.title('sin-s') #标题

plt.legend(['sin']) #图例,注意中括号

plt.show()  #图片展示

3.3 图

sin-s-1



3.4 代码:注释版

#---导出模块---

import matplotlib.pyplot as plt

import numpy as np

#---定义画布大小和分辨率

#fig = plt.figure(figsize=(8,8),dpi=80) #自定义

#fig = plt.figure() #这是默认的,也可以这一行不设,就是默认

#---画正弦sin曲线---

#0.001越小,线条越平滑好看

#从-2*np.pi到2*np.pi=就是2个2π,4个波=2个波峰+2个波底

#x = np.arange(-2*np.pi,2*np.pi,0.001)

x = np.arange(-2*np.pi,2*np.pi,0.1)

y = np.sin(x)

#画线

plt.plot(x,y,color='blue')

#默认显示2个2π,4个波=2个波峰+2个波底

#plt.ylim(-2, 2)

#plt.xlim(-2, 2)

plt.title('sin-s') #标题

plt.legend(['sin']) #图例,注意中括号

plt.show()  #图片展示

4.cos余弦函数:

4.1 将上面的sin函数的简洁版的代码中,sin改为cos即可,颜色定义为绿色=green。

4.2 代码:简洁版

#---导出模块---

import matplotlib.pyplot as plt

import numpy as np

#---画正弦cos曲线---

x = np.arange(-2*np.pi,2*np.pi,0.1)

y = np.cos(x)

#画线

plt.plot(x,y,color='green')

plt.title('cos-s') #标题

plt.legend(['cos']) #图例,注意中括号

plt.show()  #图片展示

4.3 图:cos-s-1



5.一个坐标系展示sin和cos作图法

5.1 代码1:

#---导出模块---

import matplotlib.pyplot as plt

import numpy as np

#plt.figure() #可以不要,采用默认

#取值范围-2π~2π,比较能展现sin和cos的特点

#0.1~0.001,最好越小越好,线条越平滑

x=np.arange(-2*np.pi,2*np.pi,0.1)

y1=np.sin(x)  #正弦sin函数线条

y2=np.cos(x)  #余弦cos函数线条

#绘制两个图形,需要绘制两次

#不设置颜色,采用默认的2种不同颜色,也可以单独设置颜色

#本讲解中sin设置蓝色=blue,cos设置为绿色=green

plt.plot(x,y1,color='blue')

plt.plot(x,y2,color='green')

#增加标题

plt.title('x‘sin and cos')

#增加图例

plt.legend(['y=sinx','y=cosx'])

#增加x轴和y轴标签名

plt.xlabel('x-v')

plt.ylabel('y-v',rotation=0)

#图片展示

plt.show()

5.2 图:sin-cos-s-1



5.3 升级版,代码:

#---导出模块---

import numpy as np

from matplotlib import pyplot as plt

#---sin和cos的坐标值定义---

#---注意np的arrange和linspace的含义,在这里区别不大

##在-np.pi~np.pi之间选择256个等差数

#x = np.linspace(-2*np.pi, 2*np.pi, 512, endpoint=True)

x =np.arange(-2*np.pi,2*np.pi,0.001)

#y1=sin,y2=cos

y1, y2 = np.sin(x), np.cos(x)

#定义画布大小,不设置就是默认

#plt.figure(figsize=(10, 7))#取出一张10*7的白纸

#画sin和cos,自定义颜色blue和green,label="sin",label="cos"

plt.plot(x, y1, "-", color='blue',lw=2, aa=False, ms=50)#设置线宽5 aa关闭抗锯齿 默认开启

plt.plot(x, y2, "-", color='green',lw=2, aa=True)#默认线宽10,不设置就是默认

#去掉就是默认

#自定义刻度法,取最大值×1.2

plt.xlim(x.min() * 1.2, x.max() * 1.2)#横坐标范围

plt.ylim(y1.min() * 1.2, y1.max() * 1.2)#纵坐标范围

plt.xticks([0, x.max(), x.min()], [0, r"$\pi#34;, "$-\pi#34;])#横坐标刻度

plt.yticks([y1.min(), y1.max()])#纵坐标刻度

#图例个性设置,自定义字体大小,位置默认是最佳,显示内容是label内容

#也可以这样

plt.legend(['sin','cos'],fontsize=20)

#plt.legend(fontsize=20) #如何这样的话,那么需要在上面加入label

#标注设置

t = 2 / 3 * np.pi

#标注蓝色点垂直线

plt.plot([t, t], [0, np.sin(t)], "--", color="b")

plt.scatter([t], [np.sin(t)], s=100)#散点图

#标注红色点垂直线

plt.plot([t, t], [0, np.cos(t)], "--", color="r")

plt.scatter([t], [np.cos(t)], s=100)#散点图

#设置标注

plt.annotate(r"$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}#34;,

             (t, np.sin(t)),

             xycoords="data", textcoords="offset pixels",

             xytext=(20, 20),

             arrowprops=dict(arrowstyle="->" , connectionstyle="arc3,rad=.2"),#箭头属性

             fontsize=16,#zi字体大小

            )

#设置标注

plt.annotate(r"$\cos(\frac{2\pi}{3})=-\frac{1}{2}#34;,

             (t, np.cos(t)),

             xycoords="data", textcoords="offset pixels",

             xytext=(20, 0),

             arrowprops=dict(arrowstyle="->" , connectionstyle="arc3,rad=.2"),#箭头属性

             fontsize=16,#zi字体大小

            )

#ax定义和边框线,也可以注释掉,那就是默认

ax = plt.gca()

#去除图片的四边黑框线

ax.spines["bottom"].set_position(("data", 0))

ax.spines["left"].set_position(("data", 0))

ax.spines["top"].set_color("none")

ax.spines["right"].set_color("none")

#图片展示

plt.show()

5.4 图:sin-cos-s-2



5.5 豪华版代码:

#---导出模块---

import numpy as np

import matplotlib.pyplot as plt

#---函数定义和画函数线---

#x坐标的取值范围:linspace是等差数列法

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

#arrange法,因为0.001取值很小很平滑,所以可能☆就不能显示

#x =np.arange(-2*np.pi,2*np.pi,0.001)

#定义余弦函数正弦函数,一行定义法,也可以y1和y2

c,s=np.cos(x),np.sin(x)

#画三角函数曲线,以x为横坐标,以s和c为纵坐标

#plt.plot(x,s,"r*",label="sin-s-3")  #r*=red的*,相当于color='red',linestyle="*"

plt.plot(x,s,color="blue",label="sin-s-3")

plt.plot(x,c,color="green",linestyle="-",label="cos-s-3",alpha=0.5)

ax=plt.gca()

#去除图片的四边的边框黑线

ax.spines["right"].set_color("none")

ax.spines["top"].set_color("none")

ax.spines["left"].set_position(("data",0))

ax.spines["bottom"].set_position(("data",0))

#自定义标签文字

#x轴标签依次是:,如果注释掉就是-6~6,间隔2

plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi#39;,r'$-\pi/2#39;,r'$0#39;,r'$+\pi/2#39;,r'$+\pi#39;])

#y轴的标签,取值从-1~1,分5个等差

plt.yticks(np.linspace(-1,1,5,endpoint=True))

#默认标签位置也是这样,所以可以不要,注释掉

#ax.xaxis.set_ticks_position("bottom")  #线下

#ax.yaxis.set_ticks_position("left")  #线左边

'''

#如果上面的2行注释掉,那么下面的存在意义不大,也可以注释掉

for label in ax.get_xticklabels()+ax.get_yticklabels():

    label.set_fontsize(16)

    label.set_bbox(dict(facecolor="white",edgecolor="None",alpha=0.2))

'''

#固定面积显示

plt.fill_between(x,np.abs(x)<0.5,c,c>0.5,color="yellow",alpha=0.25)

#固定垂直虚线标注

t=1

plt.plot([t,t],[0,np.cos(t)],"y",linewidth=3,linestyle="--")

#箭头标注

plt.annotate("cos(1)",xy=(t,np.cos(1)),xycoords="data",xytext=(+10,+30),

textcoords="offset points",arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))

#增加标题

plt.title("sin-cos-s-3")

#plt.figure(1)  #可以注释掉,采用默认

#图例显示,loc代表位置,这是固定左上角位置,默认best,最佳位置,可以自动调节空挡显示

plt.legend(loc="upper left")

#显示网格,可以注释掉

plt.grid()

#显示图形

plt.show()

5.6 图:sin-cos-s-3



6 sin和cos的布局

6.1 ggplot法,代码:

#导出模块

import numpy as np

import matplotlib.pyplot as plt

#画布采用默认大小

fig=plt.figure() 

#采用ggplot法布局三个图片位置

plt.style.use('ggplot')

left,width = 0.05,0.95

#位置布局一:上面一行2个

rect_sin=[left,0.55,0.45,0.3]  #第1个图

rect_cos=[left+0.5,0.55,0.45,0.3]  #第2个图

'''

#位置布局二:上下2个,靠左

rect_sin=[left,0.55,0.45,0.3]  #第1个图

rect_cos=[left,0.1,0.45,0.3]   #第2个图

'''

#定义x和y坐标

#x=np.linspace(-10,10) #未设置等分,则线条不平滑

#x=np.linspace(-10,10,260)  #260等分,数值越大,曲线的线条越平滑

x=np.arange(-10,10,0.001)  #arange则是0.001,越小越平滑

#y1=np.sin(x)

#y1=np.cos(x)

#---第1个图---正弦sin

ax_sin = fig.add_axes(rect_sin)

ax_sin.plot(x,np.sin(x),color='blue')

ax_sin.set_title('Sin-s-ggplot')

#---第2个图---余弦cos

ax_cos=fig.add_axes(rect_cos)

ax_cos.plot(x,np.cos(x),color='green')

ax_cos.set_title('Cos-s-ggplot')

#图片展示

plt.show()

图:2lf-ggplot法


2ud-ggplot法图



6.2 subplot法

代码:

#---导出模块---

import matplotlib.pyplot as plt

import numpy as np

#---定义画布大小和分辨率---

fig = plt.figure(figsize=(8,8),dpi=80)

#采用subplot法,分四个图

#2,2,1=2行2列,第一个,从左边数

# 画正弦曲线

fig.add_subplot(2,2,1)

x = np.arange(-2*np.pi,2*np.pi,0.001)

y = np.sin(x)

plt.plot(x,y,color='blue')

plt.title('Sin-s-subplot')

plt.legend(['sin'])

#方法一:第1行1和2并列

# 余弦,2,2,2=2行2列,第2个,从左边数

#fig.add_subplot(2,2,2)

#方法二:第1行1和第2行1,上下

# 余弦,2,2,2=2行2列,第2个,从左边数

fig.add_subplot(2,2,3)

x = np.arange(-2*np.pi,2*np.pi,0.001)

y = np.cos(x)

plt.plot(x,y,color='green')

plt.title('Cos-s-subplot')

plt.legend(['cos'])

plt.show()

6.3 图略,作图位置如上面的ggplot法。


7.小结:

7.1 学习sin和cos有没有用,当然有,在画圆中需要sin和cos来定位圆的坐标。基础一定要打好。

7.2 顺带复习matplotlib的相关作图。

7.3 我自己整理好,也分享出来,值得收藏。

相关推荐

ip地址是什么(腾达路由器的ip地址是什么)

IP地址:IP是英文InternetProtocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。我们可以把ip地址类比成电话号码。扫地[sǎodì]&...

win10 1703版本(window10 1703版本)

windows的版本是这样排序的:17为2017年,03为3月,所以此版本为2017年3月更新的版本。微软加入了不少新的功能:增强了Edge浏览器的稳定性。额外的安全和隐私保护。游戏模式更加稳定。日历...

tplink路由器用户名(tplink路由器用户名和密码)

tp-link无线路由器的WiFi默认为TP-LINK_XXXX(XXXX为4位英文和数字组合)。查看tp-link无线路由器ID的方法如下:1、打开电脑浏览器,在地址栏中输入“192.168.0.1...

如何安装windows10家庭版(如何安装windows 10家庭版)

Windows10家庭版可以安装鲁大师。鲁大师是一款软件,可以用于检测电脑的系统效果和状态。然而,有人认为鲁大师被360收购后出现了很多问题,如难卸载、弹窗不断等。因此,是否需要安装鲁大师,还需要根据...

虚拟机安装win7镜像(虚拟机安装win7镜像软件)

下载VMware虚拟机win7映像文件,您可以选择官方或授权的渠道进行操作。首先,您需要确认需要下载的虚拟机镜像的操作系统和版本。通常,官方提供了一些预定义的虚拟机镜像,如Windows7等。一种可...

cpu温度过高会怎样(cpu温度过高会造成什么影响)

CPU温度过高会导致一系列问题,包括但不限于以下几个方面:1.电脑运行不稳定:CPU温度过高会导致电脑运行不稳定,程序崩溃、电脑反应缓慢等问题。2.电脑硬件损坏:CPU温度过高容易导致电脑硬件损坏...

win7进安全模式(win7进安全模式卡死)

1、重启或开机时,在进入Windows系统启动画面之前按下F8键,会出现系统多操作启动菜单,有三个版本的安全模式可以选择,回车就直接进入安全模式。2、重启电脑时,按住Ctrl键不放,会出现系统多操作启...

360手机助手下载的软件在哪里

在手机中打开安装好的360手机应用助手然后在360手机应用助手界面的右下角,选择“更多”,然后在这里再进入“设置”进入设置后,再选择“应用安装位置”设置最后我们选择SD卡即可根据以上步骤,就可以修改下...

组策略管理器怎么打开(组策略管理器怎么打开控制面板)

1.找不到2.本地组策略管理器可能找不到是因为它可能被禁用或者被删除了。另外,也有可能是因为你的操作系统版本不支持本地组策略管理器。3.如果你的操作系统版本不支持本地组策略管理器,你可以尝试使用...

电源已接通未充电什么意思(电源已接通但未充电怎么办)

原因分析:出现这样的原因有可能是长时间没有充电,导致电池的内部电量耗完后亏电严重,只是电脑充电的保护,不让过充而已,只要设置一下电池选项一般就可以解决问题了。解决方法:1、关机,拔下电源,拔出电池,...

路由器怎么桥接另外一个路由器

桥接分有线桥接和无线桥接,有线桥接就是两台路由器lan口通过网线相连,实现路由器的扩展;无线桥接是将后一台路由器工作模式设置为中继模式,在中继模式设置中选择前一台路由的WiFi信号,输入对应的密码,就...

系统重装软件下载(重装系统安装版)
  • 系统重装软件下载(重装系统安装版)
  • 系统重装软件下载(重装系统安装版)
  • 系统重装软件下载(重装系统安装版)
  • 系统重装软件下载(重装系统安装版)
手机qq空间怎么注销掉(手机qq空间咋样注销)
  • 手机qq空间怎么注销掉(手机qq空间咋样注销)
  • 手机qq空间怎么注销掉(手机qq空间咋样注销)
  • 手机qq空间怎么注销掉(手机qq空间咋样注销)
  • 手机qq空间怎么注销掉(手机qq空间咋样注销)
电脑开机进入桌面就蓝屏(电脑开机进去桌面就蓝屏)

步骤1、如果发现开机蓝屏时,可能以通过开机第一屏时迅速不停按动F8键,在屏幕出来的界面选择[安全模式]并按[Enter]进入安全模式。【电脑一开机就蓝屏】步骤1  步骤2、如果能进安全模式,说明软件有...

惠普打印机程序驱动官网(中国惠普打印机驱动程序)
惠普打印机程序驱动官网(中国惠普打印机驱动程序)

hp打印机驱动程序可以去惠普官网下载,然后安装驱动程序1/6登陆www.hp.com.cn,点击右上角的“支持”,选择“软件与驱动程序”2/6点击左侧“按产品类别浏览”中的“打印机”3/6输入要查询的产品编号4/6点击左侧搜索结...

2025-12-30 14:03 off999

取消回复欢迎 发表评论: