matplotlib绘制正余弦曲线图的实现


Posted in Python onFebruary 22, 2021

序言:

在python里面,数据可视化是python的一个亮点。在python里面,数据可视可以达到什么样的效果,这当然与我们使用的库有关。python常常需要导入库,并不断调用方法,就很像一条流数据可视化的库,有很多,很多都可以后续开发,然后我们调用。了解过pyecharts美观的可视化界面 ,将pyecharts和matplotlib相对比一下。

pyecharts和matplotlib的区别在哪里呢?Matplotlib是Python数据可视化库的泰斗,尽管已有十多年的历史,但仍然是Python社区中使用最广泛的绘图库,它的设计与MATLAB非常相似,提供了一整套和MATLAB相似的命令API,适合交互式制图,还可以将它作为绘图控件,嵌入其它应用程序中。
Pyecharts是一款将Python与Echarts相结合的数据可视化工具,可以高度灵活的配置,轻松搭配出精美的视图。其中Echarts是百度开源的一个数据可视化库,而Pyecharts将Echarts与Python进行有机对接,方便在Python中直接生成各种美观的图形。

数据可视化之matplotlib绘制正余弦曲线图

我们先来看最终实现效果

matplotlib绘制正余弦曲线图的实现

上面这个图是最终保存的图片查看效果
我们一步一步来实现

1:首先我们需要导入基本的库

matplotlib numpy
matplotlib 是我们本章需要的库
numpy 是我们数据分析处理的常见库,在机器学习时也会经常用到。

一步一步来了
下面展示一些 内联代码片

第一步

#1:用到的方法及参数
# linspace(start, stop, num=50, endpoint=True, 
# retstep=False, dtype=None)
# 相关参数的说明
# 指定在start到stop均分数值
# start:不可省略
# stop:有时包含有时不包含,根据endpoint来选择,默认包含
# num:指定均分的数量,默认为50
# endpoint:布尔值,可选,默认为True。包含stop就True,不包含就# False
# retstep : 布尔值,可选,默认为False。如果为True,返回值和步长
# dtype : 输出数据类型,可选。如果不指定,则根据前面参数的数据类型
# 2:np.plot(x,y.color.lw,label,ls,mk,mec,mfc)
# 其中X由所有输入点坐标的x值组成,Y是由与X中包含的x对应的y所组
# 成的向量
# color 指定线条的颜色
# lw指定线条的宽度
# lw指定线条的样式,默认为实现
# mk可以指定数据标识符
# ms可以指定标识符的大小
# mec可以指定标识符的边界色彩
# mfc标识符内部填充颜色
import matplotlib.pyplot as plt
import numpy as np
#用于正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']
# 用于正常显示符号
plt.rcParams['axes.unicode_minus']=False
x = np.linspace(-np.pi,np.pi,256,endpoint = 256)
sin,cos = np.sin(x),np.cos(x)
#绘制,并设置相关的参数,这里标签还不会显示出来,因为还没有
#添加图例,具体往下面看
plt.plot(x,sin,color = 'blue',lw=2.5,label = '正弦sin',mec='red')
plt.plot(x,cos,color = 'red',lw = 2.5,label = '余弦cos()')
plt.show() #显示

matplotlib绘制正余弦曲线图的实现

第二步

#用到的方法及参数
# plt.xlim(xmin, xmax)
# xmin:x轴上的最小值
# xmax:x轴上的最大值
#plt.ylim() 与上一样的道理
#具体如何使用,可以看下面的实例代码
plt.xlim(x.min()*1.5,x.max()*1.5) #将x轴拉伸1.5倍
plt.ylim(cos.min()*1.5,cos.max()*1.5) # 将y轴拉伸1.5倍
plt.show()

matplotlib绘制正余弦曲线图的实现

第三步

#用到的方法与参数
# plt.xticks([],[])
# plt.yticks([],[])
# plt.title('',color,color,..) #设置标题,里面的相关参数可以# 指定
# plt.text(备注内容x轴的坐标,备注内容y轴的坐标 ,'备注内容',fontsize,color,..) #给右下角添加备注

#想说的说这里面有连个参数,分别以列表的形式展示。
现在只需要介绍是用来设置坐标刻度的。其中第二个参数列表
是用来转义的。具体实例如下。

下面展示一些 内联代码片

在x轴的刻度上,我们需要我们需要按照规则的正余弦刻度来,而不是简单的实数,我们需要圆周率。因此在plt.xticks([],[])的第二个列表参数上需要转义。

#这里的r'$代表开始,$代表结尾,\代表转义,\pi代表圆周率的意思,r代表原始字符串。因此可以一一对应下来的。

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])
plt.title("绘图正余弦函数曲线图",fontsize = 16,color ='green')
#给图片右下角添加备注标签
plt.text(+2.2,-1.4,"by:jgdabc",fontsize=16,color = 'purple')
plt.show()

matplotlib绘制正余弦曲线图的实现

第四步:

用到的方法及参数:
plt.gca()#这个方法有点东西。
我要简单的去理解,Python库太繁杂了。有点头大。
plt.gca(),可以获得axes对象
什么又是axes对象?
在matplotlib中,整个图表为一个figure对象。每个figure
对象中可以包含一个或多个axes,而axes为坐标轴。每个axes
对象都是一个拥有自己坐标系统的绘图区域。我们可以理解为通
过这个方法我们可以获得axes对象,而通过这个对象可以帮助我们
方便的操作坐标轴,ok。具体操作看实例吧!

#我相信能看懂英文的不看注释也可以看懂
ax = plt.gca() #获取Axes对象
ax.spines['right'].set_color('none') #隐藏右边界
ax.spines['top'].set_color('none')#隐藏上边界
ax.xaxis.set_ticks_position('bottom') #x轴坐标刻度设置在坐标下面
ax.spines['bottom'].set_position(('data',0))#将x坐标轴平移经过(0,0)的位置
ax.yaxis.set_ticks_position('left')#将y轴坐标刻度设置在坐标轴左侧
ax.spines['left'].set_position(('data',0))#将y轴坐标轴平移到(0,0)位置
plt.show()

兄弟们是不是有点像了,还不够。

matplotlib绘制正余弦曲线图的实现

第五步:

用到的方法及参数:

plt.legend()

添加图例

这样才会把我上述label的内容显示出来。

plt.legend(loc ='upper left',fontsize=12)
plt.show()

matplotlib绘制正余弦曲线图的实现

第六步
注意第六步我们要描点,并画线

用到的方法及参数
plt.plot() # 这个前面已经有说明,不再赘述,这里我们
要加一个参数linewidth指定,将其变为虚线
plt.scatter() #用来绘制两个点的位置
plt.annotate #用来添加注释文字,具体解释我们在实例代码中说明

```javascript
t1 = 2*np.pi/3 #取一个x轴坐标点
t2 = -np.pi # 取第二个坐标点
#根据画线,第一个列表是x轴坐标值,第二个列表是y轴坐标值
plt.plot([t1,t1],[0,np.sin(t1)],color = 'b',linewidth = 1.5,linestyle = '--')
#画线
plt.plot([t2,t2],[0,np.cos(t2)],color ='r',linewidth=1.5,linestyle="--")
#标注两个点的位置(绘制散点图的方法)
plt.scatter([t1,],[np.sin(t1),],50,color = 'b') #50为指定的大小
#为图表添加注释
plt.scatter([t2,],[np.cos(2),],50,color = 'r')
plt.annotate( r'$\sin(\frac{2\pi}{3}=\frac{\sqrt{3}}{2}$)',
       xy = (t1,np.sin(t1)), #点的位置
       xycoords = 'data', #注释文字的偏移量
       xytext = (+10,+30), #文字离点的横纵距离
       textcoords = 'offset points',
       fontsize =14,#注释的大小
       arrowprops = dict(arrowstyle = '->',connectionstyle = 'arc3,rad=.2')#箭头指向的弯曲度


)
plt.annotate(r'$\cos(-\pi)=-1$',
       xy = (t2,np.cos(t2)),
       xycoords = 'data', #注释文字的偏移量
       xytext = (0 ,-40), # 文字离点的横纵距离
       textcoords = 'offset points',
       fontsize = 14,#注释的大小
       arrowprops = dict(arrowstyle = '->',connectionstyle='arc3,rad=.2')

       ) #点的位置

plt.show()

matplotlib绘制正余弦曲线图的实现

第七步:我想设置一下x轴和y轴的字体,一提到轴,就用ax.
我们直接上代码去解释

#遍历获取x轴和y轴的刻度,并设置字体
for label in ax.get_xticklabels() + ax.get_yticklabels() :
  label.set_fontsize(18)
  label.set_bbox(dict(facecolor = 'r',edgecolor='g',alpha=0.5))#alpha代表透明度
#绘制填充区域
plt.fill_between(x,np.abs(x)<0.5,sin,sin>0.5,color='g',alpha =0.8)
plt.fill_between(x,cos,where = (-2.5<x)&(x<-0.5),color = 'purple')
plt.grid() #绘制网格线

plt.savefig("D:\python学习数据可视化matplot学习.png",dpi = 300)保存图片
plt.show()

注意这里保存一定要先保存,后show。

最终效果

matplotlib绘制正余弦曲线图的实现

给大家完整代码

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
x = np.linspace(-np.pi,np.pi,256,endpoint=256)
sin,cos = np.sin(x),np.cos(x)
plt.plot(x,sin,color = 'blue',lw=2.5,label = '正弦sin',mec='red')
plt.plot(x,cos,color = 'red',lw = 2.5,label = '余弦cos()')
plt.xlim(x.min()*1.5,x.max()*1.5)
plt.ylim(cos.min()*1.5,cos.max()*1.5)
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])
plt.title("绘图正余弦函数曲线图",fontsize = 16,color ='green')
plt.text(+2.2,-1.4,"by:jgdabc",fontsize=16,color = 'purple')
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
plt.legend(loc ='upper left',fontsize=12)
t1 = 2*np.pi/3
t2 = -np.pi

plt.plot([t1,t1],[0,np.sin(t1)],color = 'b',linewidth = 1.5,linestyle = '--')

plt.plot([t2,t2],[0,np.cos(t2)],color ='r',linewidth=1.5,linestyle="--")

plt.scatter([t1,],[np.sin(t1),],50,color = 'b')

plt.scatter([t2,],[np.cos(2),],50,color = 'r')
plt.annotate( r'$\sin(\frac{2\pi}{3}=\frac{\sqrt{3}}{2}$)',
       xy = (t1,np.sin(t1)),
       xycoords = 'data',
       xytext = (+10,+30),
       textcoords = 'offset points',
       fontsize =14,
       arrowprops = dict(arrowstyle= '->',connectionstyle = 'arc3,rad=.2')#箭头指向的弯曲度


)
plt.annotate(r'$\cos(-\pi)=-1$',
       xy = (t2,np.cos(t2)),
       xycoords = 'data',
       xytext = (0 ,-40),
       textcoords = 'offset points',
       fontsize = 14,
       arrowprops = dict(arrowstyle = '->',connectionstyle='arc3,rad=.2')

       )
for label in ax.get_xticklabels() + ax.get_yticklabels() :
  label.set_fontsize(18)
  label.set_bbox(dict(facecolor = 'r',edgecolor='g',alpha=0.5))

plt.fill_between(x,np.abs(x)<0.5,sin,sin>0.5,color='g',alpha =0.8)
plt.fill_between(x,cos,where = (-2.5<x)&(x<-0.5),color = 'purple')
plt.grid()

plt.savefig("D:\python学习数据可视化matplot学习.png",dpi = 300)
plt.show()

到此这篇关于matplotlib绘制正余弦曲线图的实现的文章就介绍到这了,更多相关matplotlib 正余弦曲线图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python益智游戏计算汉诺塔问题示例
Mar 05 Python
Python做文本按行去重的实现方法
Oct 19 Python
Python 内置函数complex详解
Oct 23 Python
Pycharm学习教程(2) 代码风格
May 02 Python
PyQt实现界面翻转切换效果
Apr 20 Python
浅谈python中字典append 到list 后值的改变问题
May 04 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
python正则-re的用法详解
Jul 28 Python
解决Python使用列表副本的问题
Dec 19 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
Mar 16 Python
python中 _、__、__xx__()区别及使用场景
Jun 30 Python
python 实现弹球游戏的示例代码
Nov 17 Python
Python使用tkinter制作在线翻译软件
Feb 22 #Python
Python中使用Selenium环境安装的方法步骤
Feb 22 #Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 #Python
python实现计算图形面积
Feb 22 #Python
python实现银行账户系统
Feb 22 #Python
Django实现简单的分页功能
Feb 22 #Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
Feb 22 #Python
You might like
用PHP实现递归循环每一个目录
2010/08/08 PHP
PHP里的中文变量说明
2011/07/23 PHP
php中实现简单的ACL 完结篇
2011/09/07 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
初识PHP
2014/09/28 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
举例讲解Python中的算数运算符的用法
2015/05/13 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
python如何实现单链表的反转
2020/02/10 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
宝拉珍选澳大利亚官方购物网站:Paula’s Choice澳大利亚
2016/09/13 全球购物
心理健康教育心得体会
2013/12/29 职场文书
大学毕业生通用自我评价
2014/01/05 职场文书
初中校园广播稿
2014/02/02 职场文书
师德个人剖析材料
2014/02/02 职场文书
护理不良事件检讨书
2014/02/06 职场文书
秋游活动策划方案
2014/02/16 职场文书
难忘的一课教学反思
2014/04/30 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
护士节慰问信
2015/02/15 职场文书
宝葫芦的秘密观后感
2015/06/11 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
解决pytorch-gpu 安装失败的记录
2021/05/24 Python
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL
vue实现简易音乐播放器
2022/08/14 Vue.js