这篇文章主要介绍了使用matplotlib怎么绘制一个正余弦曲线图,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:
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() #显示
第二步
#用到的方法及参数 # 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()
第三步
#用到的方法与参数 # 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()
第四步:
用到的方法及参数:
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()
兄弟们是不是有点像了,还不够。
第五步:
用到的方法及参数:
plt.legend()
添加图例
这样才会把我上述label的内容显示出来。
plt.legend(loc ='upper left',fontsize=12) plt.show()
第六步
注意第六步我们要描点,并画线
用到的方法及参数 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,line) #标注两个点的位置(绘制散点图的方法) 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()
第七步:我想设置一下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。
最终效果
给大家完整代码
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,line) 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怎么绘制一个正余弦曲线图的文章就介绍到这了,更多相关内容请搜索亿速云以前的文章或继续浏览下面的相关文章希望大家以后多多支持亿速云!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。