python的matplotlib的三角函数sin和cos的静态作图详解
off999 2024-09-20 22:50 21 浏览 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 我自己整理好,也分享出来,值得收藏。
相关推荐
- 每天一个 Python 库:datetime 模块全攻略,时间操作太丝滑!
-
在日常开发中,时间处理是绕不开的一块,比如:生成时间戳比较两个时间差转换为可读格式接口传参/前端展示/日志记录今天我们就用一个案例+代码+思维导图,带你完全搞定datetime模块的用法!...
- 字节跳动!2023全套Python入门笔记合集
-
学完python出来,已经工作3年啦,最近有很多小伙伴问我,学习python有什么用其实能做的有很多可以提高工作效率增强逻辑思维还能做爬虫网站数据分析等等!!最近也是整理了很多适合零基...
- 为什么你觉得Matplotlib用起来困难?因为你还没看过这个思维导图
-
前言Matplotlib是一个流行的Python库,可以很容易地用于创建数据可视化。然而,设置数据、参数、图形和绘图在每次执行新项目时都可能变得非常混乱和繁琐。而且由于应用不同,我们不知道选择哪一个图...
- Python新手必看!30分钟搞懂break/continue(附5个实战案例)
-
一、跳转语句的使命当程序需要提前结束循环或跳过特定迭代时,break和continue就是你的代码急刹按钮和跳步指令。就像在迷宫探险中:break=发现出口立即离开continue=跳过陷阱继续前进二...
- 刘心向学(24)Python中的数据类(python中5种简单的数据类型)
-
分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来文章“刘心向学(24)Python中的数据类”欢迎您的访问。Shareinterest,...
- 刘心向学(25)Python中的虚拟环境(python虚拟环境安装和配置)
-
分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来文章“刘心向学(25)Python中的虚拟环境”欢迎您的访问。Shareinte...
- 栋察宇宙(八):Python 中的 wordcloud 库学习介绍
-
分享乐趣,传播快乐,增长见识,留下美好。亲爱的您,这里是LearingYard学苑!今天小编为大家带来“Python中的wordcloud库学习介绍”欢迎您的访问!Sharethefun,...
- AI在用|ChatGPT、Claude 3助攻,1分钟GET高颜值思维导图
-
机器之能报道编辑:Cardinal以大模型、AIGC为代表的人工智能浪潮已经在悄然改变着我们生活及工作方式,但绝大部分人依然不知道该如何使用。因此,我们推出了「AI在用」专栏,通过直观、有趣且简洁的人...
- 使用DeepSeek + Python开发AI思维导图应用,非常强!
-
最近基于Deepseek+PythonWeb技术开发了一个AI对话自动生成思维导图的应用,用来展示下如何基于低门槛的Python相关技术栈,高效结合deepseek实现从应用场景到实际应用的快速落地...
- 10幅思维导图告诉你 - Python 核心知识体系
-
首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典,集合),条件&循环,文件对象,错误&异常,函数,模块,面向对象编程;接着,结合这些思维导图主要参考的...
- Python基础核心思维导图,让你轻松入门
-
Python基础核心思维导图【高清图文末获取】学习路线图就给大家看到这里了,需要的小伙伴下方获取获取方式看下方图片...
- Python基础核心思维导图,学会事半功倍
-
Python基础核心思维导图【高清图文末获取】学习路线图就给大家看到这里了,需要的小伙伴下方获取获取方式看下方图片...
- 硬核!288页Python核心知识笔记(附思维导图,建议收藏)
-
今天就给大家分享一份288页Python核心知识笔记,相较于部分朋友乱糟糟的笔记,这份笔记更够系统地总结相关知识,巩固Python知识体系。文末获取完整版PDF该笔记学习思维导图:目录内容展示【领取方...
- Python学习知识思维导图(高效学习)
-
Python学习知识思维导图python基础知识python数据类型条件循环列表元组字典集合字符串序列函数面向对象编程模块错误异常文件对象#python##python自学##编程#...
- 别找了!288页Python核心知识笔记(附思维导图,建议收藏)
-
今天就给大家分享一份288页Python核心知识笔记,相较于部分朋友乱糟糟的笔记,这份笔记更够系统地总结相关知识,巩固Python知识体系。文末获取完整版PDF该笔记学习思维导图:目录内容展示【领取方...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 每天一个 Python 库:datetime 模块全攻略,时间操作太丝滑!
- 字节跳动!2023全套Python入门笔记合集
- 为什么你觉得Matplotlib用起来困难?因为你还没看过这个思维导图
- Python新手必看!30分钟搞懂break/continue(附5个实战案例)
- 刘心向学(24)Python中的数据类(python中5种简单的数据类型)
- 刘心向学(25)Python中的虚拟环境(python虚拟环境安装和配置)
- 栋察宇宙(八):Python 中的 wordcloud 库学习介绍
- AI在用|ChatGPT、Claude 3助攻,1分钟GET高颜值思维导图
- 使用DeepSeek + Python开发AI思维导图应用,非常强!
- 10幅思维导图告诉你 - Python 核心知识体系
- 标签列表
-
- python计时 (54)
- python安装路径 (54)
- python类型转换 (75)
- python进度条 (54)
- python的for循环 (56)
- python串口编程 (60)
- python写入txt (51)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python qt (52)
- python人脸识别 (54)
- python斐波那契数列 (51)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- centos7安装python (53)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)