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

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

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

3天內不再提示

慢慢探秘Matplotlib的強大之處

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

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

開場例子

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

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()函數設定坐標的標簽,兩個函數主要有以下兩個參數:location:指坐標的位置.

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

兩個參數一般是等長的數組,該函數另一個常用的參數是rotation參數,可以對坐標標簽進行適當的旋轉,看下面的例子:

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坐標由原來的數值1,2,3變成了我們設置的日期,同時標簽與X軸成45度角.

2.2 添加文本

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

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

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

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函數來實現

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

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

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

參數b,設定是否顯示grid,如果要顯示grid,將b參數設置為True、參數which,設定坐標軸的分割標示線的類型,取值為major、minor或者both,默認為major,表示以原本的坐標軸分割標示線為準;若取值為minor,則進一步細分坐標軸分割標示線,但是分割標準要提前設定,如果只是設定值為minor,則grid不會顯示;both表示大小區間坐標軸分割線都有參數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()

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

增加圖例使用legend()函數,legend函數中最常見的一個參數是loc參數,表示圖例在圖中顯示的位置,我們一般設置為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函數中的linestyle參數用于設置曲線類型,為了書寫方便,有時候用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函數中的color參數來設置,也可以簡寫成c,最常用的顏色指定方式是指定顏色的名稱或者簡寫,也可以通過RGB數組來設置.

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

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

類型 名稱取值 符號取值
'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函數中的linewidth函數指定,也可簡寫為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()

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

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 柱狀圖

在剛才的收盤價數據中,統計收盤價落在(2,3],(3,4],(4,5],(5,6]的天數,分別有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函數可以繪制水平柱狀圖:

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

3.2 直方圖

柱狀圖主要用于展示定性數據的分布,對于定量數據的分布,一般使用直方圖來呈現。繪制直方圖用pyplot包中的hist函數來實現,主要有以下幾個參數:bins用于設置直方圖分布區間的個數;range用于設置直方圖的小矩形的最小值與最大值;orientation用于設置直方圖的水平或者垂直顯示,默認是豎直的直方圖,可以將orientation設置為horizontal使其變為水平直方圖.

plt.hist(Close,bins=12)

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

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

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

3.3 餅圖

繪制餅圖使用pie方法,主要參數有: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 箱線圖

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

pyplot的boxplot函數用于繪制箱線圖,主要有以下幾個參數: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來說,繪圖之前需要先創建一個Figure對象,Figure對象是一個空白區域,然后我們就可以在上面進行繪圖。Figure對象可通過pyplot包中的figure函數來創建。

fig=plt.figure(1)

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

可以看到在創建Axes對象時傳入了一個數值型list,list的前兩個元素決定了Axes的左下角坐標,而第三個和第四個參數決定了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對象的位置除了通過區域坐標和長度來設定一位,更為常用的方式是通過子圖subplot()函數來設定。

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

參數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

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

    關注

    185

    文章

    2977

    瀏覽量

    230602
  • 函數
    +關注

    關注

    3

    文章

    4333

    瀏覽量

    62709
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84776

原文標題:Matplotlib基礎全攻略

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

收藏 人收藏

    評論

    相關推薦

    Python2D繪圖庫Matplotlib會用嗎?

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

    matplotlib繪圖中編寫的輔助函數總結

    matplotlib做圖中常用的輔助函數
    發表于 05-17 17:12

    關于卷積神經網絡探秘的簡單了解

    卷積神經網絡探秘
    發表于 06-04 11:59

    數據可視化之Python-matplotlib概述

    數據可視化(二):Python-matplotlib
    發表于 07-22 14:58

    python matplotlib模塊報錯的解決方法

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

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

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

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

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

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

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

    鋰離子電池結構探秘

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

    探秘可穿戴與IOT黑科技

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

    相比Matplotlib 可視化神器Altair登場

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

    用于數據科學的python必學模塊之Matplotlib的資料說明

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

    Python的Matplotlib函數匯總

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

    探秘DLP? NIRscan? Nano評估模塊

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

    python中matplotlib和seaborn介紹

    的使用和分析,而數據的整合最好的方式就是使用可視化的方式將數據變現出來。 matplotlib和seabornde介紹 在Python中,我們可以使用matplotlib庫和seaborn庫來生成各種圖表。matplotlib
    的頭像 發表于 10-07 11:16 ?1020次閱讀
    python中<b class='flag-5'>matplotlib</b>和seaborn介紹
    主站蜘蛛池模板: 浪荡女天天不停挨CAO日常视| 文中字幕一区二区三区视频播放| 偷上邻居熟睡少妇| 囯产精品久久久久免费蜜桃| 無码一区中文字幕少妇熟女网站 | 我要色色网| 国产一区免费在线观看| 亚洲性夜色噜噜噜网站2258KK| 久久久免费观看| 成人伊人青草久久综合网| 亚洲 日本 天堂 国产 在线| 久久青青热| 囯产免费久久久久久国产免费 | 久久视频这里只精品99re8久| brazzers欧美孕交| 性派对xxxhd| 美女搞鸡网站| 国产精品美女久久久久AV超清 | 亚洲成 人a影院青久在线观看| 久久精品国产清白在天天线| 补课H湿 1V1 PLAY| 一二三四韩国免费观看| 青青伊人影院| 久久精品黄色| 囯产精品久久久久免费蜜桃| 益日韩欧群交P片内射中文| 日本一卡2卡3卡四卡精品网站 | 菊地凛子av| 国产成人精品电影| 2021自产拍在线观看视频| 午夜伦4480yy妇女久久| 嗯好大好猛皇上好深用力| 国产专区亚洲欧美另类在线| J午夜精品久久久久久毛片| 妖精视频一区二区免费| 色欲狠狠躁天天躁无码中文字幕| 久久蜜视频| 国产亚洲精品久久久久久无码网站| free俄罗斯性xxxxhd派对| 越南美女内射BBWXZ| 亚洲成人免费在线|