色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

慢慢探秘Matplotlib的強大之處

電子工程師 ? 來源:lp ? 2019-03-07 14:41 ? 次閱讀

Matplotlib是Python中最流行的繪圖庫,它模仿MATLAB中的繪圖風格,提供了一整套與MATLAB相似的繪圖API,通過API,我們可以輕松地繪制出高質(zhì)量的圖形。

開場例子

我們以中國銀行股票收盤價曲線作為例子來作為開場。首先我們通過pandas導入數(shù)據(jù),并提取出收盤價一列:

ChinaBank=pd.read_csv('data/ChinaBank.csv',index_col='Date')ChinaBank=ChinaBank.iloc[:,1:]ChinaBank.index=pd.to_datetime(ChinaBank.index)Close=ChinaBank.Close

我們來繪制2014年中國銀行股票收盤價的走勢圖:

.plot(Close['2014'])plt.show()

是不是很簡單,接下來,我們一起去慢慢探秘Matplotlib的強大之處

修改繪圖屬性

2.1 坐標

更改坐標范圍繪圖時往往需要修改橫縱坐標軸的范圍,以使曲線位于圖形的中間位置:

plt.plot([1,1,0,0,-1,0,1,1,-1])plt.show()

我們可以通過ylim方法修改y軸的范圍,比如我們想修改為(-1.5,1.5),同理,我們可以通過xlim方法來修改x軸的坐標范圍:

plt.plot([1,1,0,0,-1,0,1,1,-1])plt.ylim(-1.5,1.5)plt.show()

設定坐標軸標簽和旋轉我們可以通過xticks()和yticks()函數(shù)設定坐標的標簽,兩個函數(shù)主要有以下兩個參數(shù):location:指坐標的位置.

labels:對應的坐標位置顯示的標簽.

兩個參數(shù)一般是等長的數(shù)組,該函數(shù)另一個常用的參數(shù)是rotation參數(shù),可以對坐標標簽進行適當?shù)男D,看下面的例子:

plt.plot([1,1,0,0,-1,0,1,1,-1])plt.ylim(-1.5,1.5)plt.xticks(range(9),['02-01','02-02','02-03','02-04','02-05','02-06','02-07','02-08','02-09'],rotation=45)plt.show()

可以看到X坐標由原來的數(shù)值1,2,3變成了我們設置的日期,同時標簽與X軸成45度角.

2.2 添加文本

添加標題添加標題可以通過title函數(shù)來實現(xiàn),該函數(shù)主要有兩個參數(shù),第一個是str,指明標題的內(nèi)容,第二個是loc,指明標題的位置,可以選擇center,left或者right,默認是center

plt.plot(Close['2014'])plt.title('中國銀行2014年收盤價曲線',loc='right')plt.show()

可以看到,在mac的Ipython環(huán)境下,中文是無法正常顯示的,我們可以通過下面的方法解決:

frommatplotlib.font_managerimportFontManager,FontPropertiesdefgetChineseFont():returnFontProperties(fname='/System/Library/Fonts/PingFang.ttc')plt.plot(Close['2014'])plt.title('中國銀行2014年收盤價曲線',loc='right',fontproperties=getChineseFont())plt.show()

設置坐標軸標簽設置坐標軸標簽可以通過xlabel和ylabel函數(shù)來實現(xiàn)

plt.plot(Close['2014'])plt.title('中國銀行2014年收盤價曲線',loc='center',fontproperties=getChineseFont())plt.xlabel('日期',fontproperties=getChineseFont())plt.ylabel('收盤價',fontproperties=getChineseFont())plt.show()

增加圖形背景grid繪圖時常常會在圖形背景中增添方格,以便于人們更直觀地讀取線條中點的坐標取值以及線條整體的分布范圍.可以使用grid函數(shù)增加和設定圖形的背景.

函數(shù)原型:matplotlib.pyplot.grid(b=None,which='major',axis='both',**kwargs)

參數(shù)b,設定是否顯示grid,如果要顯示grid,將b參數(shù)設置為True、參數(shù)which,設定坐標軸的分割標示線的類型,取值為major、minor或者both,默認為major,表示以原本的坐標軸分割標示線為準;若取值為minor,則進一步細分坐標軸分割標示線,但是分割標準要提前設定,如果只是設定值為minor,則grid不會顯示;both表示大小區(qū)間坐標軸分割線都有參數(shù)axis,指定繪制grid 的坐標軸,取值為both,x或y。

plt.plot(Close['2014'])plt.title('中國銀行2014年收盤價曲線',loc='center',fontproperties=getChineseFont())plt.xlabel('日期',fontproperties=getChineseFont())plt.ylabel('收盤價',fontproperties=getChineseFont())plt.grid(True,axis='y')plt.show()

增加圖例當多條曲線顯示在同一張圖中時,圖例可以幫助我們區(qū)分識別不同的曲線,在中國銀行的數(shù)據(jù)中,我們可以把開盤價和收盤價同時放在一張曲線圖中,并為二者增加圖例.

增加圖例使用legend()函數(shù),legend函數(shù)中最常見的一個參數(shù)是loc參數(shù),表示圖例在圖中顯示的位置,我們一般設置為best就好,表示在圖中最適宜的位置顯示圖例成功增加圖例的前提是在繪圖時提供label屬性值,label屬性值就是圖例上的文本,同時我們還要注意中文顯示的問題。

Open=ChinaBank.Openplt.plot(Close['2014'],label='收盤價')plt.plot(Open['2014'],label='開盤價')plt.legend(loc='best',prop=getChineseFont())plt.show()

2.3 多種線條屬性

線條的類型在繪制曲線時,除了繪制實線外,還可以繪制虛線,plot函數(shù)中的linestyle參數(shù)用于設置曲線類型,為了書寫方便,有時候用ls代替linestyle。有如下的常見取值:

類型 名稱取值 符號取值
實線 'solid' '-'
虛線 'dashed' '--'
線點 'dashdot' '-.'
點線 'dotted' ':'
不畫線 'None' ' '

plt.plot(Close['2014'],label='收盤價',linestyle='solid')plt.plot(Open['2014'],label='開盤價',ls='-.')plt.legend(loc='best',prop=getChineseFont())plt.xlabel('日期',fontproperties=getChineseFont())plt.ylabel('收盤價',fontproperties=getChineseFont())plt.title('中國銀行2014年收盤價曲線',loc='center',fontproperties=getChineseFont())plt.grid(True,axis='y')plt.show()

圖形的顏色修改圖形的顏色通過plot函數(shù)中的color參數(shù)來設置,也可以簡寫成c,最常用的顏色指定方式是指定顏色的名稱或者簡寫,也可以通過RGB數(shù)組來設置.

plt.plot(Close['2014'],label='收盤價',c='r',linestyle='solid')plt.plot(Open['2014'],label='開盤價',c='b',ls=':')plt.legend(loc='best',prop=getChineseFont())plt.xlabel('日期',fontproperties=getChineseFont())plt.ylabel('收盤價',fontproperties=getChineseFont())plt.title('中國銀行2014年收盤價曲線',loc='center',fontproperties=getChineseFont())plt.grid(True,axis='y')plt.show()

點的形狀類型除了設置線條類型外,還可以設置數(shù)據(jù)點的形狀,圖形的形狀通過marker參數(shù)來設置.marker參數(shù)主要有下面的取值:

類型 名稱取值 符號取值
'point' '.'
圓圈 'circle' 'o'
向下三角形 'triangle_down' 'v'
向上三角形 'triangle_up' '^'
向左三角形 'triangle_left' ' <'
向右三角形 'triangle_right' '>'
正方形 'square' 's'
五邊形 'pentagon' 'p'
六邊形 'hexagonal' 'h'
加號 'plus' '+'
叉號 'x' 'x'
鉆石 'diamond' 'D'
星號 'star' '*'
豎線 'line' ' '

plt.plot(Close['2014'],label='收盤價',c='r',marker='o',linestyle='solid')plt.plot(Open['2014'],label='開盤價',c='b',marker='v',ls='-.')plt.legend(loc='best',prop=getChineseFont())plt.xlabel('日期',fontproperties=getChineseFont())plt.ylabel('收盤價',fontproperties=getChineseFont())plt.title('中國銀行2014年收盤價曲線',loc='center',fontproperties=getChineseFont())plt.grid(True,axis='y')plt.show()

線條寬度線條寬度可以通過plot函數(shù)中的linewidth函數(shù)指定,也可簡寫為lw

plt.plot(Close['2014'],label='收盤價',c='r',marker='o',linestyle='solid',linewidth=1)plt.plot(Open['2014'],label='開盤價',c='b',marker='>',ls='-.',lw=3)plt.legend(loc='best',prop=getChineseFont())plt.xlabel('日期',fontproperties=getChineseFont())plt.ylabel('收盤價',fontproperties=getChineseFont())plt.title('中國銀行2014年收盤價曲線',loc='center',fontproperties=getChineseFont())plt.grid(True,axis='y')plt.show()

前面講到的線條的類型,圖形的顏色和點的形狀類型,可以合為一個屬性,使用他們的符號取值將其拼接,這個參數(shù)的位置是有限制的,比如在下面的代碼中,它只能放在label前面,在label參數(shù)后面則會報錯.

plt.plot(Close['2014'],'--rD',label='收盤價',linewidth=1)plt.plot(Open['2014'],'--b>',label='開盤價',lw=3)plt.legend(loc='best',prop=getChineseFont())plt.xlabel('日期',fontproperties=getChineseFont())plt.ylabel('收盤價',fontproperties=getChineseFont())plt.title('中國銀行2014年收盤價曲線',loc='center',fontproperties=getChineseFont())plt.grid(True,axis='y')plt.show()

常見圖形繪制

3.1 柱狀圖

在剛才的收盤價數(shù)據(jù)中,統(tǒng)計收盤價落在(2,3],(3,4],(4,5],(5,6]的天數(shù),分別有228,35,81,1天,我們來繪制柱狀圖:

plt.bar(left=[2,3,4,5],height=[228,35,81,1],bottom=2,width=1,color='r',edgecolor='b')

使用barh函數(shù)可以繪制水平柱狀圖:

plt.bar(left=[2,3,4,5],height=[228,35,81,1],bottom=2,width=1,color='r',edgecolor='b')

3.2 直方圖

柱狀圖主要用于展示定性數(shù)據(jù)的分布,對于定量數(shù)據(jù)的分布,一般使用直方圖來呈現(xiàn)。繪制直方圖用pyplot包中的hist函數(shù)來實現(xiàn),主要有以下幾個參數(shù):bins用于設置直方圖分布區(qū)間的個數(shù);range用于設置直方圖的小矩形的最小值與最大值;orientation用于設置直方圖的水平或者垂直顯示,默認是豎直的直方圖,可以將orientation設置為horizontal使其變?yōu)樗街狈綀D.

plt.hist(Close,bins=12)

plt.hist(Close,bins=12,orientation='horizontal')

也可以繪制累積分布直方圖,將參數(shù)cumulative設置為True即可:

plt.hist(Close,range=(2.3,5.5),orientation='vertical',cumulative=True,color='r',edgecolor='b')

3.3 餅圖

繪制餅圖使用pie方法,主要參數(shù)有:labels:用于設置扇形圖的標簽colors:用于設置扇形圖的顏色shadow:用于設定扇形圖是否有陰影

plt.pie([228,35,81,1],labels=('(2,3]','(3,4]','(4,5]','(5,6]'),colors=('b','g','r','c'),shadow=True)

3.4 箱線圖

箱線圖也是在分析數(shù)據(jù)時經(jīng)常用到的一種圖形,正如其名,箱線圖由一個矩形和兩條線組成,矩形的上邊和下邊分別是變量的上下四分位數(shù),中間的一條線表示數(shù)變量的中位數(shù)。在矩形的上下兩邊各延伸出一條線,每條線的長度一般為1.5倍的四分位距(上下四分位數(shù)之差),這兩條線被視為異常值截斷線,上端的線為上邊緣線,下端的線為下邊緣線,在線的外面可能還會有一些點,這些點一般會被認為是異常值。箱線圖能夠很直觀地表示出一個變量的分布,也有助于檢測異常值。

pyplot的boxplot函數(shù)用于繪制箱線圖,主要有以下幾個參數(shù):notch:表示箱線圖的類型,默認為False,即繪制矩形箱線圖,如果取值為True,表示繪制鋸齒狀箱線圖labels:表示箱形圖的標簽,一般為字符串序列類型

importnumpyasnpprcData=ChinaBank.iloc[:,:4]data=np.array(prcData)plt.boxplot(data,labels=('Open','High','Low','Close'))plt.title('中國銀行股票箱線圖',fontproperties=getChineseFont())

多圖繪制

除了上面介紹的,Matplotlib的另一大特色是面向對象的繪圖,類比生活中的用紙筆繪圖,我們來解釋Matplotlib面向對象繪圖在使用生活中紙筆畫圖時,我們需要先找到一張白紙,在白紙上繪圖。對于Matplotlib來說,繪圖之前需要先創(chuàng)建一個Figure對象,F(xiàn)igure對象是一個空白區(qū)域,然后我們就可以在上面進行繪圖。Figure對象可通過pyplot包中的figure函數(shù)來創(chuàng)建。

fig=plt.figure(1)

在這張白紙上,我們可以選擇較大區(qū)域,指畫一個收盤價折線圖,如果想要節(jié)約用紙或者對比兩個價格序列,可以將這個紙分成兩個區(qū)域,分別繪制收盤價折線圖和開盤價折線圖。在Matplotlib繪圖中,每個Figure對象可以包含一個或者幾個Axes對象.每個Axes對象即一個繪圖區(qū)域,擁有自己獨立的坐標系統(tǒng),假設我們現(xiàn)在需要兩個區(qū)域,分別繪制中國銀行股票的開盤價走勢和收盤價走勢,我們可以創(chuàng)建兩個Axes對象.

ax1=fig.add_axes([0.1,0.1,0.3,0.3])ax2=fig.add_axes([0.5,0.5,0.4,0.4])

可以看到在創(chuàng)建Axes對象時傳入了一個數(shù)值型list,list的前兩個元素決定了Axes的左下角坐標,而第三個和第四個參數(shù)決定了Axes的長和寬接下來,我們基本就可以按照之前介紹的知識進行繪圖了:

fig=plt.figure(1)ax1=fig.add_axes([0.1,0.1,0.3,0.3])ax2=fig.add_axes([0.5,0.5,0.4,0.4])ax1.plot(Close[:10])ax1.set_title('前十個交易日收盤價',fontproperties=getChineseFont())ax1.set_xlabel('日期',fontproperties=getChineseFont())ax1.set_ylabel('收盤價',fontproperties=getChineseFont())ax1.set_ylim(2.4,2.65)ax2.plot(Open[:10])ax2.set_title('前十個交易日開盤價',fontproperties=getChineseFont())ax2.set_xlabel('日期',fontproperties=getChineseFont())ax2.set_ylabel('開盤價',fontproperties=getChineseFont())ax2.set_ylim(2.4,2.65)plt.show()

在實際繪圖中,如果一個Figure對象中包含多個Axes對象,每個Axes對象的位置除了通過區(qū)域坐標和長度來設定一位,更為常用的方式是通過子圖subplot()函數(shù)來設定。

fig=plt.figure()ax1=plt.subplot(221)ax2=plt.subplot(222)ax3=plt.subplot(223)ax4=plt.subplot(224)plt.show()

參數(shù)221中的22表示子圖排列為2*2形式,1表示第一個子圖,其他均為同樣的道理.最后,我們再來體驗一個繪制多圖的例子:

Close15=Close['2015']ax1=plt.subplot(221)ax1.plot(Close15,color='k')ax1.set_xlabel('日期',fontproperties=getChineseFont())ax1.set_ylabel('收盤價',fontproperties=getChineseFont())ax1.set_title('中國銀行2015年收盤價曲線',fontproperties=getChineseFont())Volume15=ChinaBank['Volume']['2015']Open15=Open['2015']ax2=plt.subplot(212)left1=Volume15.index[Close15>=Open15]hight1=Volume15[left1]ax2.bar(left1,hight1,color='r')left2=Volume15.index[Close15

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    185

    文章

    2980

    瀏覽量

    230837
  • 函數(shù)
    +關注

    關注

    3

    文章

    4345

    瀏覽量

    62891
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    84970

原文標題:Matplotlib基礎全攻略

文章出處:【微信號:atleadai,微信公眾號:LeadAI OpenLab】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Python2D繪圖庫Matplotlib會用嗎?

    Matplotlib是一個Python語言的2D繪圖庫,它支持各種平臺,并且功能強大,能夠輕易繪制出各種專業(yè)的圖像。本文是對它的一個入門教程。
    的頭像 發(fā)表于 08-06 09:09 ?3201次閱讀
    Python2D繪圖庫<b class='flag-5'>Matplotlib</b>會用嗎?

    matplotlib繪圖中編寫的輔助函數(shù)總結

    matplotlib做圖中常用的輔助函數(shù)
    發(fā)表于 05-17 17:12

    關于卷積神經(jīng)網(wǎng)絡探秘的簡單了解

    卷積神經(jīng)網(wǎng)絡探秘
    發(fā)表于 06-04 11:59

    數(shù)據(jù)可視化之Python-matplotlib概述

    數(shù)據(jù)可視化(二):Python-matplotlib
    發(fā)表于 07-22 14:58

    python matplotlib模塊報錯的解決方法

    pyenv下使用python matplotlib模塊的問題解決
    發(fā)表于 10-30 09:12

    探秘DLP NIRscan Nano評估模塊,不看肯定后悔

    探秘DLP NIRscan Nano評估模塊,不看肯定后悔
    發(fā)表于 05-07 06:31

    PLC通信原理探秘大講堂幕后彩蛋之擱淺

    專家大講堂《PLC通信原理探秘》系列視頻:https://www.ad.siemens.com.cn/service/elearning/series/288.html連載之一:【PLC通信原理探秘
    發(fā)表于 07-01 12:58

    電動機效率 matlab,【原創(chuàng)】matplotlib繪制電機效率MAP圖 精選資料分享

    matplotlib簡介matplotlib是Python的第三方工具包,顧名思義它是一個關于矩陣及繪圖的開發(fā)包,里面豐富的函數(shù)以及類似MATLAB的函數(shù)可以讓我們很快繪制一幅圖像(Figure
    發(fā)表于 09-01 06:31

    鋰離子電池結構探秘

    鋰離子電池結構探秘.rar 鋰離子電池結構探秘
    發(fā)表于 01-28 14:41 ?54次下載

    探秘可穿戴與IOT黑科技

    美信FAE小姐姐,帶你探秘可穿戴與IOT黑科技!
    的頭像 發(fā)表于 05-30 17:24 ?2234次閱讀
    <b class='flag-5'>探秘</b>可穿戴與IOT黑科技

    相比Matplotlib 可視化神器Altair登場

    語言的開發(fā)者使用最多的是 matplotlib,一個很強大的可視化庫,不過它的局限也非常嚴重,制作交互式圖表也是一件難事。
    的頭像 發(fā)表于 05-23 14:49 ?2970次閱讀
    相比<b class='flag-5'>Matplotlib</b> 可視化神器Altair登場

    用于數(shù)據(jù)科學的python必學模塊之Matplotlib的資料說明

    本文檔的主要內(nèi)容詳細介紹的是用于數(shù)據(jù)科學的python必學模塊之Matplotlib的資料說明。
    發(fā)表于 09-18 08:00 ?14次下載
    用于數(shù)據(jù)科學的python必學模塊之<b class='flag-5'>Matplotlib</b>的資料說明

    Python的Matplotlib函數(shù)匯總

    本文檔的主要內(nèi)容詳細介紹的是Python的Matplotlib函數(shù)匯總免費下載。
    發(fā)表于 12-17 08:00 ?2次下載

    探秘DLP? NIRscan? Nano評估模塊

    探秘DLP? NIRscan? Nano評估模塊
    發(fā)表于 11-02 08:16 ?0次下載
    <b class='flag-5'>探秘</b>DLP? NIRscan? Nano評估模塊

    python中matplotlib和seaborn介紹

    的使用和分析,而數(shù)據(jù)的整合最好的方式就是使用可視化的方式將數(shù)據(jù)變現(xiàn)出來。 matplotlib和seabornde介紹 在Python中,我們可以使用matplotlib庫和seaborn庫來生成各種圖表。matplotlib
    的頭像 發(fā)表于 10-07 11:16 ?1045次閱讀
    python中<b class='flag-5'>matplotlib</b>和seaborn介紹
    主站蜘蛛池模板: 亚洲色图在线观看视频 | 狠狠啪在线香蕉 | 免费一级片网站 | 国内精品久久久久影院亚洲 | 国产成人综合在线视频 | 饥渴的护士自慰被发现 | 无人区大片中文字幕在线 | 神马电影我不卡4k手机在线观看 | 欧美国产精品主播一区 | 日本午夜精品久久久无码 | 日日日操操操 | 俄罗斯aaaaa一级毛片 | 国产成人欧美日韩在线电影 | 亚洲福利视频导航 | 国产片MV在线观看 | 男人和女人一起愁愁愁很痛 | 熟女少妇内射日韩亚洲 | 国产成人 免费观看 | 国产午夜一级鲁丝片 | 办公室激情在线观看 | 18禁裸乳无遮挡免费网站 | 亚洲国产精品VA在线看黑人 | 亚洲欧洲日产国码中学 | 男人私gay挠脚心vk视频 | 国产精品美女久久久久AV超清 | 国产一区二区三区四区五在线观看 | 51精品少妇人妻AV一区二区 | 女人的选择hd | 国产日韩在线欧美视频 | 老司机试看午夜 | 国产欧美一区二区精品仙草咪 | 无码AV精品一区二区三区 | 免费一级特黄欧美大片久久网 | 中国国产不卡视频在线观看 | 91女神娇喘 | 国产精品点击进入在线影院高清 | 无码国产欧美日韩精品 | 国产又色又爽又刺激在线播放 | 国产精品九九九久久九九 | 午夜性爽视频男人的天堂在线 | yin荡体育课羞耻play双性 |