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

Python常見庫(kù)matplotlib學(xué)習(xí)筆記之多個(gè)子圖繪圖

 更新時(shí)間:2023年05月08日 09:47:52   作者:PellyKoo  
Matplotlib是Python提供的一個(gè)繪圖庫(kù),通過(guò)該庫(kù)我們可以很容易的繪制出折線圖、直方圖、散點(diǎn)圖、餅圖等豐富的統(tǒng)計(jì)圖,下面這篇文章主要給大家介紹了關(guān)于Python常見庫(kù)matplotlib學(xué)習(xí)筆記之多個(gè)子圖繪圖的相關(guān)資料,需要的朋友可以參考下

系列文章目錄

前言

前兩章介紹了單張圖的繪圖操作,這一章介紹下在一張圖中畫多個(gè)圖的操作。我們把前一篇的程序稍微改動(dòng)一下,上一篇中是將正弦函數(shù)和余弦函數(shù)畫在一張圖中,這一次我們將兩個(gè)曲線分別畫在不同的子圖中。

完整程序如下所示:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

# 指定字體
font_path = 'SIMSUN.TTC'
font_prop = fm.FontProperties(fname=font_path, size=12)

en_font_path = 'TIMES.TTF'
en_font_prop = fm.FontProperties(fname=en_font_path, size=12)

x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6))

ax1.plot(x, y1, label=u'正弦曲線', color='blue')
ax1.set_ylabel('正弦值', fontproperties=font_prop)
ax1.set_xlabel('橫軸', fontproperties=font_prop)
ax1.set_title('正弦函數(shù)', fontproperties=font_prop)

plt.subplots_adjust(hspace=0.6) # 調(diào)整子圖之間的距離

ax2.plot(x, y2, label=u'余弦曲線', color='red')
ax2.set_ylabel('余弦值', fontproperties=font_prop)
ax2.set_xlabel('橫軸', fontproperties=font_prop)
ax2.set_title('余弦函數(shù)', fontproperties=font_prop)

plt.suptitle('函數(shù)', fontproperties=font_prop)

ax1.tick_params(axis='both', which='major', labelsize=10, direction='in', bottom=True)
ax2.tick_params(axis='both', which='major', labelsize=10, direction='in')
# ax1.xaxis.set_tick_params(which='both', labelbottom=True)
# ax1.yaxis.set_tick_params(which='both', labelleft=True)
for tick in ax1.get_xticklabels():
    tick.set_fontproperties(en_font_prop)
for tick in ax1.get_yticklabels():
    tick.set_fontproperties(en_font_prop)
for tick in ax2.get_xticklabels():
    tick.set_fontproperties(en_font_prop)
for tick in ax2.get_yticklabels():
    tick.set_fontproperties(en_font_prop)

ax1.legend(loc='upper right', fontsize=12, edgecolor='black', fancybox=False, framealpha=1, prop=font_prop)
ax2.legend(loc='upper right', fontsize=12, edgecolor='black', fancybox=False, framealpha=1, prop=font_prop)

plt.show()

上述的代碼顯示結(jié)果是:

下面我們開始對(duì)代碼一段段分析。

一、多張子圖的參數(shù)設(shè)置

1. 子圖(subplots)

下面的代碼就是先進(jìn)行子圖設(shè)置。

fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 6))

第一個(gè)參數(shù)為2,表示子圖行的排布方式,為2行

第二個(gè)參數(shù)為1,表示子圖列的排布方式,為1列

figsize的參數(shù)為(10,6),表示最終圖的總像素?cái)?shù)為1000*600。也就是說(shuō)第一個(gè)值為寬,第二個(gè)值為高,分別乘以100后,即為生成最終圖的寬高。

除了上面描述的幾種參數(shù)以外,還有下面的可選參數(shù):

參數(shù)含義
squeeze是否壓縮返回的子圖網(wǎng)格數(shù)組,如果為 True,則當(dāng) nrows=1 且 ncols=1 時(shí),返回的是單個(gè) Axes 實(shí)例,而不是一個(gè)包含單個(gè) Axes 實(shí)例的數(shù)組。
subplot_kw傳遞給每個(gè)子圖的關(guān)鍵字參數(shù)字典。
gridspec_kw傳遞給 GridSpec 的關(guān)鍵字參數(shù)字典。
sharex是否共享 x 軸的限制范圍。可選值為 ‘none’、‘all’ 或 ‘row’。
sharey是否共享 y 軸的限制范圍??蛇x值為 ‘none’、‘all’ 或 ‘col’。

2. 子圖y軸坐標(biāo)說(shuō)明(set_ylabel),子圖x軸坐標(biāo)說(shuō)明(set_xlabel),設(shè)置子圖標(biāo)題(set_title)

與單一圖像不同的是,有子圖的情況下,我們對(duì)子圖設(shè)置坐標(biāo)名稱和子圖名稱時(shí)調(diào)用的名字前面要加上set_。

ax1.plot(x, y1, label=u'正弦曲線', color='blue')
ax1.set_ylabel('正弦值', fontproperties=font_prop)
ax1.set_xlabel('橫軸', fontproperties=font_prop)
ax1.set_title('正弦函數(shù)', fontproperties=font_prop)

可以設(shè)置的參數(shù)在下面的對(duì)應(yīng)列表中,上面程序中的'正弦值','橫軸'就是下面的參數(shù)label。

參數(shù)含義
label標(biāo)簽的文本內(nèi)容。
fontsize(size)標(biāo)簽的字體大小。
fontweight標(biāo)簽的字體粗細(xì),通常為 ‘bold’ 或 ‘normal’,是否有變化還要看字體文件本身是否支持
color標(biāo)簽的字體顏色,可以是顏色名稱、十六進(jìn)制碼或 RGB 元組。
rotation標(biāo)簽的旋轉(zhuǎn)角度,通常為 0(水平)或 90(垂直)。
va標(biāo)簽的垂直對(duì)齊方式,可選值包括 ‘top’、‘center’ 或 ‘bottom’。
ha標(biāo)簽的水平對(duì)齊方式,可選值包括 ‘center’、‘left’ 或 ‘right’

3. 圖片總標(biāo)題(suptitle)

設(shè)置圖的總名稱需要調(diào)用suptitle函數(shù)實(shí)現(xiàn)。suptitle是super title的縮寫,其實(shí)就是總標(biāo)題

plt.suptitle('函數(shù)', fontproperties=font_prop)

suptitle可以設(shè)置參數(shù)如下表所示,本例中‘函數(shù)’就是參數(shù)中的t。

參數(shù)含義
t超級(jí)標(biāo)題的文本內(nèi)容。
x超級(jí)標(biāo)題的 x 坐標(biāo),通常為 0.5,即位于子圖網(wǎng)格的中央。這個(gè)值是一個(gè)百分比,左邊為0,右邊為1。0.5就是處于圖像正中間。
y超級(jí)標(biāo)題的 y 坐標(biāo),默認(rèn)值為 0.98,即位于子圖網(wǎng)格的頂部。這個(gè)值是一個(gè)百分比,頂部為1,底部為0。0.98就是這個(gè)圖像高度的98%的位置。
fontsize(size)超級(jí)標(biāo)題的字體大小。
fontweight超級(jí)標(biāo)題的字體粗細(xì),通常為 ‘bold’ 或 ‘normal’。
color超級(jí)標(biāo)題的字體顏色,可以是顏色名稱、十六進(jìn)制碼或 RGB 元組。
ha超級(jí)標(biāo)題的水平對(duì)齊方式,可選值包括 ‘center’、‘left’ 或 ‘right’。
va超級(jí)標(biāo)題的垂直對(duì)齊方式,可選值包括 ‘top’、‘center’ 或 ‘bottom’

4. 刻度參數(shù)設(shè)置(tick_parms)

ax1.tick_params(axis='both', which='major', labelsize=10, direction='in', bottom=True)
ax2.tick_params(axis='both', which='major', labelsize=10, direction='in')

常見的使用到的參數(shù)如下表所示

參數(shù)含義
axis指定要設(shè)置哪個(gè)坐標(biāo)軸的刻度線和標(biāo)簽屬性,可選值為 ‘x’、‘y’ 或 ‘both’
which指定要設(shè)置哪些刻度線和標(biāo)簽屬性,可選值為 ‘major’(主刻度線和標(biāo)簽)、‘minor’(次刻度線和標(biāo)簽)或 ‘both’(主刻度線和標(biāo)簽以及次刻度線和標(biāo)簽)
direction指定刻度線的方向,可選值為 ‘in’(向內(nèi))、‘out’(向外)或 ‘inout’(內(nèi)外均有)
length指定刻度線的長(zhǎng)度(單位為點(diǎn))
width指定刻度線的寬度(單位為點(diǎn))
color指定刻度線和標(biāo)簽的顏色
pad指定刻度標(biāo)簽與刻度線之間的間距(單位為點(diǎn))
labelsize指定刻度標(biāo)簽的字號(hào)大小(單位為點(diǎn))
labelcolor指定刻度標(biāo)簽的顏色
bottom、top、left、right分別指定四個(gè)邊框上的刻度線和標(biāo)簽屬性,這些值都是布爾屬性,默認(rèn)bottom和left是True,top和right是False

把上面的tick_params中的參數(shù)修改下,添加下表中的一些參數(shù),如下面所示

ax1.tick_params(axis='both', which='major', labelsize=10, direction='in', width=5, pad=10, top=True, left=False, right=True, labelcolor='green')

顯示出的圖就變了,我是隨便加了些,內(nèi)容反而顯的雜亂了,其目的主要是為了測(cè)試。

5. 刻度標(biāo)簽的字體(get_xticklabels)(set_fontproperties)

關(guān)于刻度標(biāo)簽的很多參數(shù),在tick_params中其實(shí)就可以設(shè)置了,比如說(shuō)color,pad,labelsize,labelcolor。但唯獨(dú)這個(gè)字體的格式的設(shè)置比較特殊,需要按下面的代碼進(jìn)行修改

for tick in ax1.get_xticklabels():
    tick.set_fontproperties(en_font_prop)
for tick in ax1.get_yticklabels():
    tick.set_fontproperties(en_font_prop)
for tick in ax2.get_xticklabels():
    tick.set_fontproperties(en_font_prop)
for tick in ax2.get_yticklabels():
    tick.set_fontproperties(en_font_prop)

上面的代碼實(shí)現(xiàn)的是對(duì)子圖1和子圖2的x軸刻度標(biāo)簽和y軸刻度標(biāo)簽的修改,總共要做四次,修改成新羅馬體。

get_xticklabels 是 Matplotlib 中用于獲取 x 軸刻度標(biāo)簽的方法。這個(gè)方法沒有參數(shù)可以設(shè)置,它返回的是一個(gè)包含 Text 對(duì)象的列表,每個(gè) Text 對(duì)象代表一個(gè) x 軸刻度標(biāo)簽,可以通過(guò)調(diào)用 Text 對(duì)象的方法不僅可以用來(lái)設(shè)置刻度標(biāo)簽的字體,還可以設(shè)置刻度標(biāo)簽的屬性,例如字體大小、顏色、旋轉(zhuǎn)角度等,等于是通過(guò)for循環(huán)遍歷來(lái)一個(gè)個(gè)設(shè)置刻度標(biāo)簽。

以下是一些常用的 Text 對(duì)象方法及其含義:

對(duì)象方法含義
set_text(text)設(shè)置刻度標(biāo)簽的文本內(nèi)容。
set_fontsize(size)設(shè)置刻度標(biāo)簽的字號(hào)大小。
set_color(color)設(shè)置刻度標(biāo)簽的顏色。
set_rotation(angle)設(shè)置刻度標(biāo)簽的旋轉(zhuǎn)角度(單位為度)。
set_ha(ha)設(shè)置刻度標(biāo)簽的水平對(duì)齊方式,可選值為 ‘left’、‘center’ 或 ‘right’。
set_va(va)設(shè)置刻度標(biāo)簽的垂直對(duì)齊方式,可選值為 ‘top’、‘center’ 或 ‘bottom’。

總結(jié)

本章節(jié)主要介紹了子圖繪圖中常見的幾個(gè)參數(shù)的設(shè)置,與單一圖所使用的函數(shù)是不同的,使用者需要注意。

到此這篇關(guān)于Python常見庫(kù)matplotlib學(xué)習(xí)筆記之多個(gè)子圖繪圖的文章就介紹到這了,更多相關(guān)matplotlib多個(gè)子圖繪圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論