欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

matplotlib繪制正余弦曲線圖的實(shí)現(xiàn)

 更新時(shí)間:2021年02月22日 11:43:45   作者:jgdabc  
這篇文章主要介紹了matplotlib繪制正余弦曲線圖的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

序言:

在python里面,數(shù)據(jù)可視化是python的一個(gè)亮點(diǎn)。在python里面,數(shù)據(jù)可視可以達(dá)到什么樣的效果,這當(dāng)然與我們使用的庫(kù)有關(guān)。python常常需要導(dǎo)入庫(kù),并不斷調(diào)用方法,就很像一條流數(shù)據(jù)可視化的庫(kù),有很多,很多都可以后續(xù)開(kāi)發(fā),然后我們調(diào)用。了解過(guò)pyecharts美觀的可視化界面 ,將pyecharts和matplotlib相對(duì)比一下。

pyecharts和matplotlib的區(qū)別在哪里呢?Matplotlib是Python數(shù)據(jù)可視化庫(kù)的泰斗,盡管已有十多年的歷史,但仍然是Python社區(qū)中使用最廣泛的繪圖庫(kù),它的設(shè)計(jì)與MATLAB非常相似,提供了一整套和MATLAB相似的命令A(yù)PI,適合交互式制圖,還可以將它作為繪圖控件,嵌入其它應(yīng)用程序中。
Pyecharts是一款將Python與Echarts相結(jié)合的數(shù)據(jù)可視化工具,可以高度靈活的配置,輕松搭配出精美的視圖。其中Echarts是百度開(kāi)源的一個(gè)數(shù)據(jù)可視化庫(kù),而Pyecharts將Echarts與Python進(jìn)行有機(jī)對(duì)接,方便在Python中直接生成各種美觀的圖形。

數(shù)據(jù)可視化之matplotlib繪制正余弦曲線圖

我們先來(lái)看最終實(shí)現(xiàn)效果

在這里插入圖片描述

上面這個(gè)圖是最終保存的圖片查看效果
我們一步一步來(lái)實(shí)現(xiàn)

1:首先我們需要導(dǎo)入基本的庫(kù)

matplotlib numpy
matplotlib 是我們本章需要的庫(kù)
numpy 是我們數(shù)據(jù)分析處理的常見(jiàn)庫(kù),在機(jī)器學(xué)習(xí)時(shí)也會(huì)經(jīng)常用到。

一步一步來(lái)了
下面展示一些 內(nèi)聯(lián)代碼片

第一步

#1:用到的方法及參數(shù)
# linspace(start, stop, num=50, endpoint=True, 
# retstep=False, dtype=None)
# 相關(guān)參數(shù)的說(shuō)明
# 指定在start到stop均分?jǐn)?shù)值
# start:不可省略
# stop:有時(shí)包含有時(shí)不包含,根據(jù)endpoint來(lái)選擇,默認(rèn)包含
# num:指定均分的數(shù)量,默認(rèn)為50
# endpoint:布爾值,可選,默認(rèn)為True。包含stop就True,不包含就# False
# retstep : 布爾值,可選,默認(rèn)為False。如果為True,返回值和步長(zhǎng)
# dtype : 輸出數(shù)據(jù)類型,可選。如果不指定,則根據(jù)前面參數(shù)的數(shù)據(jù)類型
# 2:np.plot(x,y.color.lw,label,ls,mk,mec,mfc)
# 其中X由所有輸入點(diǎn)坐標(biāo)的x值組成,Y是由與X中包含的x對(duì)應(yīng)的y所組
# 成的向量
# color 指定線條的顏色
# lw指定線條的寬度
# lw指定線條的樣式,默認(rèn)為實(shí)現(xiàn)
# mk可以指定數(shù)據(jù)標(biāo)識(shí)符
# ms可以指定標(biāo)識(shí)符的大小
# mec可以指定標(biāo)識(shí)符的邊界色彩
# mfc標(biāo)識(shí)符內(nèi)部填充顏色
import matplotlib.pyplot as plt
import numpy as np
#用于正常顯示中文標(biāo)簽
plt.rcParams['font.sans-serif']=['SimHei']
# 用于正常顯示符號(hào)
plt.rcParams['axes.unicode_minus']=False
x = np.linspace(-np.pi,np.pi,256,endpoint = 256)
sin,cos = np.sin(x),np.cos(x)
#繪制,并設(shè)置相關(guān)的參數(shù),這里標(biāo)簽還不會(huì)顯示出來(lái),因?yàn)檫€沒(méi)有
#添加圖例,具體往下面看
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() #顯示

在這里插入圖片描述

第二步

#用到的方法及參數(shù)
# plt.xlim(xmin, xmax)
# xmin:x軸上的最小值
# xmax:x軸上的最大值
#plt.ylim() 與上一樣的道理
#具體如何使用,可以看下面的實(shí)例代碼

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()

在這里插入圖片描述

第三步

#用到的方法與參數(shù)
# plt.xticks([],[])
# plt.yticks([],[])
# plt.title('',color,color,..) #設(shè)置標(biāo)題,里面的相關(guān)參數(shù)可以# 指定
# plt.text(備注內(nèi)容x軸的坐標(biāo),備注內(nèi)容y軸的坐標(biāo) ,'備注內(nèi)容',fontsize,color,..) #給右下角添加備注

#想說(shuō)的說(shuō)這里面有連個(gè)參數(shù),分別以列表的形式展示。
現(xiàn)在只需要介紹是用來(lái)設(shè)置坐標(biāo)刻度的。其中第二個(gè)參數(shù)列表
是用來(lái)轉(zhuǎn)義的。具體實(shí)例如下。

下面展示一些 內(nèi)聯(lián)代碼片。

在x軸的刻度上,我們需要我們需要按照規(guī)則的正余弦刻度來(lái),而不是簡(jiǎn)單的實(shí)數(shù),我們需要圓周率。因此在plt.xticks([],[])的第二個(gè)列表參數(shù)上需要轉(zhuǎn)義。

#這里的r'$代表開(kāi)始,$代表結(jié)尾,\代表轉(zhuǎn)義,\pi代表圓周率的意思,r代表原始字符串。因此可以一一對(duì)應(yīng)下來(lái)的。

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("繪圖正余弦函數(shù)曲線圖",fontsize = 16,color ='green')
#給圖片右下角添加備注標(biāo)簽
plt.text(+2.2,-1.4,"by:jgdabc",fontsize=16,color = 'purple')
plt.show()

在這里插入圖片描述

第四步:

用到的方法及參數(shù):
plt.gca()#這個(gè)方法有點(diǎn)東西。
我要簡(jiǎn)單的去理解,Python庫(kù)太繁雜了。有點(diǎn)頭大。
plt.gca(),可以獲得axes對(duì)象
什么又是axes對(duì)象?
在matplotlib中,整個(gè)圖表為一個(gè)figure對(duì)象。每個(gè)figure
對(duì)象中可以包含一個(gè)或多個(gè)axes,而axes為坐標(biāo)軸。每個(gè)axes
對(duì)象都是一個(gè)擁有自己坐標(biāo)系統(tǒng)的繪圖區(qū)域。我們可以理解為通
過(guò)這個(gè)方法我們可以獲得axes對(duì)象,而通過(guò)這個(gè)對(duì)象可以幫助我們
方便的操作坐標(biāo)軸,ok。具體操作看實(shí)例吧!

#我相信能看懂英文的不看注釋也可以看懂
ax = plt.gca() #獲取Axes對(duì)象
ax.spines['right'].set_color('none') #隱藏右邊界
ax.spines['top'].set_color('none')#隱藏上邊界
ax.xaxis.set_ticks_position('bottom') #x軸坐標(biāo)刻度設(shè)置在坐標(biāo)下面
ax.spines['bottom'].set_position(('data',0))#將x坐標(biāo)軸平移經(jīng)過(guò)(0,0)的位置
ax.yaxis.set_ticks_position('left')#將y軸坐標(biāo)刻度設(shè)置在坐標(biāo)軸左側(cè)
ax.spines['left'].set_position(('data',0))#將y軸坐標(biāo)軸平移到(0,0)位置
plt.show()

兄弟們是不是有點(diǎn)像了,還不夠。

在這里插入圖片描述

第五步:

用到的方法及參數(shù):

plt.legend()

添加圖例

這樣才會(huì)把我上述label的內(nèi)容顯示出來(lái)。

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

在這里插入圖片描述

第六步
注意第六步我們要描點(diǎn),并畫(huà)線

用到的方法及參數(shù)
plt.plot() # 這個(gè)前面已經(jīng)有說(shuō)明,不再贅述,這里我們
要加一個(gè)參數(shù)linewidth指定,將其變?yōu)樘摼€
plt.scatter() #用來(lái)繪制兩個(gè)點(diǎn)的位置
plt.annotate #用來(lái)添加注釋文字,具體解釋我們?cè)趯?shí)例代碼中說(shuō)明

```javascript
t1 = 2*np.pi/3 #取一個(gè)x軸坐標(biāo)點(diǎn)
t2 = -np.pi # 取第二個(gè)坐標(biāo)點(diǎn)
#根據(jù)畫(huà)線,第一個(gè)列表是x軸坐標(biāo)值,第二個(gè)列表是y軸坐標(biāo)值
plt.plot([t1,t1],[0,np.sin(t1)],color = 'b',linewidth = 1.5,linestyle = '--')
#畫(huà)線
plt.plot([t2,t2],[0,np.cos(t2)],color ='r',linewidth=1.5,linestyle="--")
#標(biāo)注兩個(gè)點(diǎn)的位置(繪制散點(diǎn)圖的方法)
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)), #點(diǎn)的位置
       xycoords = 'data', #注釋文字的偏移量
       xytext = (+10,+30), #文字離點(diǎn)的橫縱距離
       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), # 文字離點(diǎn)的橫縱距離
       textcoords = 'offset points',
       fontsize = 14,#注釋的大小
       arrowprops = dict(arrowstyle = '->',connectionstyle='arc3,rad=.2')

       ) #點(diǎn)的位置

plt.show()

在這里插入圖片描述

第七步:我想設(shè)置一下x軸和y軸的字體,一提到軸,就用ax.
我們直接上代碼去解釋

#遍歷獲取x軸和y軸的刻度,并設(shè)置字體
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代表透明度
#繪制填充區(qū)域
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() #繪制網(wǎng)格線

plt.savefig("D:\python學(xué)習(xí)數(shù)據(jù)可視化matplot學(xué)習(xí).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("繪圖正余弦函數(shù)曲線圖",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學(xué)習(xí)數(shù)據(jù)可視化matplot學(xué)習(xí).png",dpi = 300)
plt.show()


到此這篇關(guān)于matplotlib繪制正余弦曲線圖的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)matplotlib 正余弦曲線圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python pyinotify模塊實(shí)現(xiàn)對(duì)文檔的實(shí)時(shí)監(jiān)控功能方法

    Python pyinotify模塊實(shí)現(xiàn)對(duì)文檔的實(shí)時(shí)監(jiān)控功能方法

    今天小編就為大家分享一篇Python pyinotify模塊實(shí)現(xiàn)對(duì)文檔的實(shí)時(shí)監(jiān)控功能方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python編程之順序執(zhí)行與程序的主入口詳解

    Python編程之順序執(zhí)行與程序的主入口詳解

    程序從程序入口進(jìn)入,到程序執(zhí)行結(jié)束,大體是按照順序結(jié)構(gòu)執(zhí)行語(yǔ)句、函數(shù)或代碼塊,掌握程序的結(jié)構(gòu),有利于把握程序的主體框架,下面這篇文章主要給大家介紹了關(guān)于Python編程之順序執(zhí)行與程序的主入口的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 在pytorch中計(jì)算準(zhǔn)確率,召回率和F1值的操作

    在pytorch中計(jì)算準(zhǔn)確率,召回率和F1值的操作

    這篇文章主要介紹了在pytorch中計(jì)算準(zhǔn)確率,召回率和F1值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Pycharm中配置Anaconda解釋器的完整步驟

    Pycharm中配置Anaconda解釋器的完整步驟

    Anaconda是Python的一個(gè)發(fā)行版本,集成了大量插件,在用PyCharm進(jìn)行開(kāi)發(fā)時(shí),可以選用Anaconda執(zhí)行環(huán)境,下面這篇文章主要給大家介紹了關(guān)于Pycharm中配置Anaconda解釋器的完整步驟,需要的朋友可以參考下
    2022-11-11
  • python自動(dòng)發(fā)送郵件腳本

    python自動(dòng)發(fā)送郵件腳本

    這篇文章主要為大家詳細(xì)介紹了python自動(dòng)發(fā)送郵件的腳本源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python中的TfidfVectorizer參數(shù)使用解析

    Python中的TfidfVectorizer參數(shù)使用解析

    這篇文章主要介紹了Python中的TfidfVectorizer參數(shù)使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Python字符編碼轉(zhuǎn)碼之GBK,UTF8互轉(zhuǎn)

    Python字符編碼轉(zhuǎn)碼之GBK,UTF8互轉(zhuǎn)

    說(shuō)到python的編碼,一句話總結(jié),說(shuō)多了都是淚啊,這個(gè)在以后的python的開(kāi)發(fā)中絕對(duì)是一件令人頭疼的事情。所以有必要輸入理解
    2020-02-02
  • python取均勻不重復(fù)的隨機(jī)數(shù)方式

    python取均勻不重復(fù)的隨機(jī)數(shù)方式

    今天小編就為大家分享一篇python取均勻不重復(fù)的隨機(jī)數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • python微信跳一跳系列之色塊輪廓定位棋盤

    python微信跳一跳系列之色塊輪廓定位棋盤

    這篇文章主要為大家詳細(xì)介紹了python微信跳一跳系列,色塊輪廓定位棋盤,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • python?lambda?表達(dá)式形式分析

    python?lambda?表達(dá)式形式分析

    這篇文章主要介紹了python?lambda?表達(dá)式形式分析,?lambda??表達(dá)式會(huì)創(chuàng)建一個(gè)函數(shù)對(duì)象,可以對(duì)其賦值并如同普通函數(shù)一樣使用,下面通過(guò)定義了一個(gè)求平方的?lambda?表達(dá)式展開(kāi)主題內(nèi)容,需要的朋友可以參考一下
    2022-04-04

最新評(píng)論