Matplotlib 使用GridSpec和其他功能自定義圖形布局


如何創建軸的網格狀組合。

subplots()也許用於創建圖形和軸的主要功能。它也類似於matplotlib.pyplot.subplot(),但是會立即在圖形上創建並放置所有軸。

GridSpec指定將放置子圖的網格的幾何形狀。需要設置網格的行數和列數。可選地,可以調整子圖布局參數(例如,左,右等)。

 

SubplotSpec指定子圖在給定GridSpec中的位置

subplot2grid()類似於的輔助函數 subplot(),但使用基於0的索引,並讓子圖占據多個單元。本教程未涵蓋此功能。

 

基本快速入門指南

前兩個示例顯示了如何使用subplots()來創建基本的2×2網格gridspec

使用subplots()非常簡單。它返回一個Figure實例和一個Axes對象數組 

 

 

 對於像這樣的簡單用例,gridspec可能過於冗長。您必須分別創建圖形和GridSpec 實例,然后將gridspec實例的元素傳遞給 add_subplot()方法以創建軸對象。

通常,以與numpy數組相同的方式訪問gridspec的元素。

 

 

gridspec的功能在於能夠創建跨越行和列的子圖

 請注意,我們還使用了便捷方法Figure.add_gridspec 代替gridspec.GridSpec,從而有可能為用戶節省了導入時間,並使名稱空間更整潔。

 

 

 

 

 

 

gridspec 通過兩種方法創建不同寬度的子圖也是必不可少的。

此處顯示的方法與上述方法類似,並初始化了統一的網格規范,然后使用numpy索引和切片為給定的子圖分配多個“單元”。

 

 

 另一種選擇是使用width_ratiosheight_ratios 參數。這些關鍵字參數是數字列表。注意,絕對值是沒有意義的,只有它們的相對比率才重要。

這意味着,等於 等寬的數字范圍內。

 

 

 學會使用width_ratios並且height_ratios特別有用,因為頂級函數subplots() 在gridspec_kw參數中接受它們

對於這個問題,任何一個參數接受 GridSpec能夠傳遞給 subplots()通過gridspec_kw參數。

本示例在不直接使用gridspec實例的情況下重新創建了上一個圖形。

 

 

 

掃盲 enumerate 函數:

enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。

 

 subplotsget_gridspec方法可以結合起來,因為它有時是使大多數使用的次要情節的更方便subplots ,然后刪除一些並結合它們。

在這里,我們創建一個布局,其中最后一列的底部兩個軸組合在一起。

 

 

精細調整Gridspec布局

顯式使用GridSpec時,可以調整從GridSpec創建的子圖的布局參數。請注意,此選項與子圖大小不兼容,

constrained_layout或者 Figure.tight_layout兩者都調整子圖大小以填充圖形。

 

 

 

 

GridSpec使用SubplotSpec 

您可以從創建GridSpec SubplotSpec,在這種情況下,其布局參數設置為給定SubplotSpec的位置。

 

 

一個復雜的嵌套GridSpec使用SubplotSpec 

這是嵌套GridSpec的一個更復雜的示例,其中通過在每個內部3x3網格中隱藏適當的刺,在外部4x4網格的每個單元周圍放置一個框。

 

 

 

 掃盲product函數:

product 用於求多個可迭代對象的笛卡爾積(Cartesian Product),它跟嵌套的 for 循環等價.即:

product(A, B) 和 ((x,y) for in for in B)一樣.

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM