电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

瀏覽:3日期:2022-07-09 13:28:14

上一篇博客中說到,matplotlib中所有畫圖元素(artist)分為兩類:基本型和容器型。容器型元素包括三種:figure、axes、axis。一次畫圖的必經流程就是先創建好figure實例,接著由figure去創建一個或者多個axes,然后通過axes實例調用各種方法來添加各種基本型元素,最后通過axes實例本身的各種方法亦或者通過axes獲取axis實例實現對各種元素的細節操控。本篇博客繼續上一節的內容,展開介紹三大容器元素創建即通過三大容器可以完成的常用設置。

1 figure1.1 創建figure

在上文中我們一直提到的figure指的是Figure類的實例化對象,當然我們一般不會直接去實例化Figure類,因為這樣創建的Figure實例對象不能納入序列中共同管理。matplotlib中提供了多種方法創建figure,其中屬pyplot模塊中的figure()方法最常用也最方便,下面我們來說說這個方法。figure方法參數如下:

num:整型或字符串類型,可選參數,默認為None。這個參數課可以理解為是figure的身份標識,即id。當值為None時,會創建一個figure實例,該實例的num值會在已有基礎上自增;當該參數不為None時,如果與已有的num值重復,則會切換到該figure使其處于激活狀態,并返回一個該figure的引用;如果傳入的參數為字符串,該字符串將會被設置為figure的標題。 figsize:tuple類型,可選參數,默認為None。通過figsize參數可以設置figure的size,即(width, height),單位為inch。當值為None時,采用默認size。 dpi:整型,可選參數,用于設置圖片像素。 facecolor:可選參數,用于設置前景色,默認為白色。 edgecolor:可選參數,用于設置邊框顏色,默認為黑色。 frameon:bool類型,可選參數,表示是否繪制窗口的圖框,默認是。 FigureClass:傳入一個類名,當使用自定義的類實例化figure時使用,默認為matplotlib.figure.Figure。 clear:bool類型,可選參數,默認為False。如果值為True的話,如果figure已存在,則會清除該figure的全部內容。

from matplotlib import pyplot as pltimport matplotlib as mplimport numpy as npmpl.rcParams[’font.sans-serif’] = [’SimHei’] # 中文字體支持

fig = plt.figure(figsize=(4,2), facecolor=’grey’) # 創建figurefig.add_axes((0,0,1,1)) # 必須添加axes后才能顯示plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

在jupyter編輯器中,空白的figure是不會顯示的,所以必須在figure中至少添加一個axes。

1.2 figure的常用設置1.2.1 set方法通用設置

創建figure時的各個參數基本都可以通過figure實例對象中對應的對應的set方法進行修改,例如set_facecolor()用來設置前景色,set_size_inches()用來設置大小等。

設置前景色:

fig = plt.figure(figsize=(4,2))fig.set_facecolor(’grey’) # 設置前景色plt.plot()plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

fig = plt.figure()fig.set_size_inches(2,3) # 設置大小plt.plot()plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

1.2.2 設置figure標題

fig = plt.figure(figsize=(4,2))fig.suptitle('figure title', color=’red’) # 設置figure標題plt.plot()plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

1.2.3 添加文本

fig = plt.figure(figsize=(4,2))fig.text(0.5,0.5,'figure text',color=’red’) # 設置figure標題,前兩個參數分別表示到左邊框和上邊框的百分比距離plt.plot()plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

1.2.4 設置圖例

fig = plt.figure(figsize=(5,3))axes = fig.add_axes((0,0,0.8,1))x = np.linspace(0, 10, 1000)line1, = axes.plot(x, np.sin(x)) # 注意,line1后面有個逗號,因為plot()方法返回值是一個列表line2, = axes.plot(x, np.cos(x))fig.legend([line1, line2],[’sin’, ’cos’])plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

1.2.5 設置子圖間距

fig, axes = plt.subplots(2,2,facecolor=’grey’)fig.subplots_adjust(left=None, # 設置畫圖區域與figure上下左右邊框的比例距離 bottom=None, right=None, top=None, wspace=0.3, # 子圖間水平方向距離 hspace=1) # 子圖間垂直方向距離plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

2 axes

axes可以認為是figure這張畫圖上的子圖,因為子圖上一般都是坐標圖,所以我更愿意理解為軸域或者坐標系。

2.1 創建axes

一個figure可以有多個axes, 無論是pyplot模塊還是figure實例內都定義有多種創建axes的方法。 (1) plt.axes()plt.axes()是指pyplot模塊中的axes()方法,該方法會在當前激活的figure中創建一個axes,并使創建好的axes處于激活狀態。當傳入的第一個位置參數為空時,該方法會創建一個占滿整個figure的axes;通常我們可以傳入一個tuple參數(left, botton, width, height)作為第一個位置參數,tuple中四個元素分別表示與figure左邊框比例距離,邊框寬度占figure寬度的比例,寬度比例,高度占figure高度的比例。通過這種方式添加axes時,matplotlib會自動創建一個axes,然后將創建好的axes按照給定的位置和size添加到figure中,最后返回一個axes的引用。

fig1 = plt.figure(figsize=(4,2), facecolor=’grey’)ax1 = plt.axes((0.1, 0.1, 0.8, 0.7), facecolor=’green’)fig2 = plt.figure(figsize=(4,2), facecolor=’yellow’)ax2 = plt.axes((0.1, 0.1, 0.8, 0.8), facecolor=’red’) # 這個axes將會被覆蓋在下面plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

注意,如果在相同區域添加axes,后面添加的axes會把前面添加的axes覆蓋。

fig = plt.figure(figsize=(4,2), facecolor=’grey’)ax1 = plt.axes((0.1, 0.1, 0.8, 0.8), facecolor=’green’)ax2 = plt.axes((0.1, 0.1, 0.8, 0.7), facecolor=’red’) # 這個axes將會被覆蓋在下面plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

(2) figure.add_axes()

figure.add_axes()方法的作用是將一個axes添加到figure中,這一方法可以傳入一個已創建好的axes作為第一個參數,add_axes會將傳入的axes添加到figure中,但這種情況使用不多。在大多數情況下,我們會如同上述在plt.axes()方法中那樣傳遞一個tuple參數(left, botton, width, height)作為第一個位置參數。同樣,如果在相同區域添加axes,后面添加的axes會把前面添加的axes覆蓋。

fig = plt.figure(figsize=(4,2), facecolor=’grey’)fig.add_axes((0.1, 0.1, 0.3, 0.7), facecolor=’green’) # 這個axes將會被覆蓋在下面fig.add_axes((0.5, 0.1, 0.3, 0.7), facecolor=’red’)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

(3) plt.subplot與plt.subplots()

plt.subplot和plt.subplots()是在pyplot模塊中定義的兩個方法,兩個方法都是將figure劃分為多行多列的網格,然后添加axes,但功能和用法卻有些許不同。

plt.subplot()

plt.subplot主要包括三個參數(nrows, ncols, index),分別表示行數、列數和索引,該方法會根據指定的行列數對figure劃分為網格,讓后在指定索引的網格中創建axes,并返回該axes的引用。索引是從1開始從左往右,從上到下遞增,例如plt.subplot(2,2,4)表示將figure劃分為兩行兩列的4個網格,并在第4個子網格中創建一個axes然后返回。注意,每一次調用plt.subplot()方法只會在指定索引的子網格中創建axes,而不是在所有子網格中都創建axes,如果需要在多個子網格中創建axes,那么就需要多次調用plt.subplot()指定不同的索引。另外,如果nrows, ncols, index三個參數都小于10,可以將這三個參數合并成一個3位整數來寫,例如plt.subplot(2,2,4)與plt.subplot(224)是完全等效的。

fig = plt.figure(figsize=(4,4), facecolor=’grey’)ax1 = plt.subplot(221,facecolor=’green’)ax2 = plt.subplot(224,facecolor=’red’)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

plt.subplots()

與plt.subplot()不同的是,plt.subplots()會重新創建一個figure,然后將創建好的figure按照指定的行列數劃分為網格,并在每一個子網格中各創建一個axes,最終同時返回figure和所有子網格中axes組成的numpy數組中。

fig, axes = plt.subplots(2,2,facecolor=’grey’)fig.suptitle(’figure title’)print(type(axes))axes[0,0].set_facecolor(’green’)axes[1,1].set_facecolor(’red’)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

plt.subplots()還有一對參數sharex, sharey用于設置是否共享x軸或y軸,這對參數有取值可以使bool型或’none’, ’all’, ’row’, ’col’這4個字符串中的一個,分別有以下含義:

False 和 ’none’表示不共享,任何子圖中的x軸或y軸都是相互獨立的; True 和 ’all’表示所有子圖共享x軸或y軸; ’row’ 表示同一行的子圖共享x軸或y軸; ’col’ 表示同一列的子圖共享x軸或y軸;

fig, axes = plt.subplots(2,2,sharex=True,sharey=True,facecolor=’grey’)fig.suptitle(’figure title’)axes[0,0].set_facecolor(’green’)axes[1,1].set_facecolor(’red’)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

(4) figure.add_subplot()與figure.subplots()

figure.add_subplot與上文中介紹過的plt.subplot()無論是功能還是使用方法上都是幾乎一樣的,唯一區別就是plt.subplot()的目標是在當前激活的figure,而figure.add_subplot()是調用add_subplot()方法的figure。

fig = plt.figure(figsize=(4,4), facecolor=’grey’)ax1 = fig.add_subplot(221,facecolor=’green’)ax2 = fig.add_subplot(224,facecolor=’red’)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

figure.subplots()的功能、用法又與上文中介紹過的plt.subplots()很相似,區別在于figure.subplots()不會重新創建一個figure,而是對當前的figure進行劃分網格并在每一個網格中都創建一個axes。

fig = plt.figure(facecolor=’grey’)axes = fig.subplots(2,2)axes[0, 0].set_facecolor(’green’)axes[1, 1].set_facecolor(’red’)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

2.2 axes的常用設置

axes是matplotlib作圖中眾多元素的核心,可以說,大多數的設置都可以通過axes來完成。

2.2.1 設置標題

fig = plt.figure(facecolor=’grey’)fig.suptitle('figure 標題', color=’red’)ax1 = fig.add_subplot(121)ax2 = fig.add_subplot(122)ax1.set_title(’ 圖 1’) # 設置標題ax2.set_title(’ 圖 2’)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

2.2.2 設置圖例

fig = plt.figure(figsize=(5,3))axes = fig.add_axes((0,0,0.8,1))x = np.linspace(0, 10, 1000)line1, = axes.plot(x, np.sin(x))line2, = axes.plot(x, np.cos(x))axes.legend([line1, line2],[’正弦’, ’余弦’])plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

2.2.3 設置坐標軸名稱

fig = plt.figure(figsize=(4,1))axes = fig.add_axes((0,0,1,1))axes.set_xlabel(’x軸’, fontsize=15)axes.set_ylabel(’y軸’, fontsize=15, color=’red’)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

2.2.4 設置坐標軸范圍

fig = plt.figure(figsize=(6,2))axes = fig.add_axes((0,0,0.8,1))x = np.linspace(-3, 5, 1000)line1, = axes.plot(x, np.sin(x))axes.set_xlim((-3,5)) # 設置橫坐標范圍axes.set_ylim((-3,3)) # 設置縱坐標范圍plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

2.2.5 隱藏邊框

fig = plt.figure(figsize=(6,2))axes = fig.add_axes((0,0,0.8,1))x = np.linspace(-10, 10, 1000)line1, = axes.plot(x, np.sin(x))axes.set_xlim((-10,10)) # 設置橫坐標范圍axes.set_ylim((-2,2)) # 設置縱坐標范圍axes.spines[’right’].set_color(’none’) #隱藏掉右邊框線axes.spines[’top’].set_color(’none’) #隱藏掉左邊框線plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

2.2.6 顯示網格

fig = plt.figure(figsize=(6,2))axes = fig.add_axes((0,0,0.8,1))x = np.linspace(-10, 10, 1000)line1, = axes.plot(x, np.sin(x))axes.set_xlim((-10,10)) # 設置橫坐標范圍axes.set_ylim((-2,2)) # 設置縱坐標范圍axes.grid(True)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

2.2.7 添加注釋

fig = plt.figure(figsize=(6,2))axes = fig.add_axes((0,0,0.8,1))x = np.linspace(-10, 10, 1000)line1, = axes.plot(x, np.sin(x))axes.set_xlim((-10,10)) # 設置橫坐標范圍axes.set_ylim((-2,2)) # 設置縱坐標范圍axes.grid(True)axes.annotate(’原點’, xy=(0, 0), # xy是指向點的坐標 xytext=(2.5, -1.5), # xytext注釋文字的坐標 arrowprops=dict(facecolor=’red’))plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

3 axis

axis在matplotlib中是一種類似于坐標軸的概念,負責處理軸標簽、刻度線、刻度標簽、網格線的繪制。在大多數情況下,axis我們手動創建,在創建axes時會一并創建axis,通過axes的實例對象即可調用axes內的axis實例。通過axis實例,我們可以實現更加多樣化、細微的圖標操作。通過axes實例可以調用get_xaxis()方法獲取axis實例,然后實現對label等對象的操作。

3.1 axis常用設置3.1.1 設置坐標軸名稱

fig = plt.figure(figsize=(4,2), facecolor=’grey’)axes = fig.add_axes((0, 0,1,1))# x軸axes.get_xaxis().get_label().set_text(’x axis’)axes.get_xaxis().get_label().set_color(’red’)axes.get_xaxis().get_label().set_fontsize(16)# y軸axes.yaxis.get_label().set_text(’y axis’)axes.yaxis.get_label().set_color(’blue’)axes.yaxis.get_label().set_fontsize(16)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

3.1.2 設置坐標軸刻度標簽樣式

fig = plt.figure(figsize=(4,2), facecolor=’grey’)axes = fig.add_axes((0, 0,1,1))# 設置x軸刻度標簽for tl in axes.get_xaxis().get_ticklabels(): tl.set_color(’red’) tl.set_rotation(45) tl.set_fontsize(16)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

3.1.3 設置坐標軸刻度位置

import matplotlib.ticker as ticker# Fixing random state for reproducibilitynp.random.seed(19680801)fig, ax = plt.subplots()ax.plot(100*np.random.rand(20))formatter = ticker.FormatStrFormatter(’$%1.2f’)ax.yaxis.set_major_formatter(formatter)for tick in ax.yaxis.get_major_ticks(): tick.label1.set_visible(False) tick.label2.set_visible(True) tick.label2.set_color(’green’)plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

3.1.4 設置坐標軸位置

fig = plt.figure(figsize=(6,2))axes = fig.add_axes((0,0,0.8,1))x = np.linspace(-10, 10, 1000)line1, = axes.plot(x, np.sin(x))axes.set_xlim((-10,10)) # 設置橫坐標范圍axes.set_ylim((-2,2)) # 設置縱坐標范圍axes.spines[’right’].set_color(’none’) #隱藏掉右邊框線axes.spines[’top’].set_color(’none’) #隱藏掉左邊框線axes.xaxis.set_ticks_position(’bottom’) #設置坐標軸位置axes.yaxis.set_ticks_position(’left’) #設置坐標軸位置axes.spines[’bottom’].set_position((’data’, 0)) #綁定坐標軸位置,data為根據數據自己判斷axes.spines[’left’].set_position((’data’, 0))plt.show()

python Matplotlib數據可視化(2):詳解三大容器對象與常用設置

4 總結

本文主要介紹matplotlib圖表的三種容器元素:figure、axes、axis。figure是最底層的容器,相當于一張畫布,在畫布上,我們可以畫多個axes,axes就是figure上的子圖,每個axes都是一張獨立的圖表,每個axes包含多個axis,通過axis我們可以實現對圖表更多細節上的操作。理解了matplotlib圖表三個層次的布局,我們就可以通過figure -> axes --> axis的流程完成圖表在宏觀層面的創建。在后續的博客中,將會繼續介紹對圖表更多更加細節化的設置以及如何畫各種不同的統計圖表。

參考

官方文檔:https://matplotlib.org/tutorials/intermediate/artists.html#sphx-glr-tutorials-intermediate-artists-py

以上就是python Matplotlib數據可視化(2):詳解三大容器對象與常用設置的詳細內容,更多關于Matplotlib數據可視化(2):三大容器對象與常用設置的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 金属回收_废铜废铁回收_边角料回收_废不锈钢回收_废旧电缆线回收-广东益夫金属回收公司 | 广州各区危化证办理_危险化学品经营许可证代办 | 光伏支架成型设备-光伏钢边框设备-光伏设备厂家 | 出国劳务公司_正规派遣公司[严海] | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 工业铝型材生产厂家_铝合金型材配件批发精加工定制厂商 - 上海岐易铝业 | 专注氟塑料泵_衬氟泵_磁力泵_卧龙泵阀_化工泵专业品牌 - 梭川泵阀 | 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 | 逗网红-抖音网红-快手网红-各大平台网红物品导航 | 德州万泰装饰 - 万泰装饰装修设计软装家居馆| 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 陕西高职单招-陕西高职分类考试网| 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 亚克力制品定制,上海嘉定有机玻璃加工制作生产厂家—官网 | 防火阀、排烟防火阀、电动防火阀产品生产销售商-德州凯亿空调设备有限公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 品牌设计_VI设计_电影海报设计_包装设计_LOGO设计-Bacross新越品牌顾问 | 浙江清风侠环保设备有限公司 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 电位器_轻触开关_USB连接器_广东精密龙电子科技有限公司 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 深圳希玛林顺潮眼科医院(官网)│深圳眼科医院│医保定点│香港希玛林顺潮眼科中心连锁品牌 | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | 浙江工业冷却塔-菱电冷却塔厂家 - 浙江菱电冷却设备有限公司 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 车牌识别道闸_停车场收费系统_人脸识别考勤机_速通门闸机_充电桩厂家_中全清茂官网 | 深圳市简易检测技术有限公司 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 |