在學習Matplotlib的過程中,大家一定會遇到這樣那樣的問題,比如說,背景圖怎么設置?坐標軸怎么設置?坐標軸上的刻度值怎么設置?怎樣在PyQt中添加Matplotlib繪圖模塊?
其實想要學好用好Matplotlib是特別簡單的,前提就是要必須清楚的了解Matplotlib圖像組成。
通常情況下,我們可以將一副Matplotlib圖像分成三層結構:
- 第一層是底層的容器層,主要包括Canvas、Figure、Axes;
- 第二層是輔助顯示層,主要包括Axis、Spines、Tick、Grid、Legend、Title等,該層可通過set_axis_off()或set_frame_on(False)等方法設置不顯示;
- 第三層為圖像層,即通過plot、contour、scatter等方法繪制的圖像。
容器層
容器層主要由Canvas、Figure、Axes組成。
Canvas是位於最底層的系統層,在繪圖的過程中充當畫板的角色,即放置畫布的工具。通常情況下,我們並不需要對Canvas特別的聲明,但是當我需要在其他模塊如PyQt中調用Matplotlib模塊繪圖時,就需要首先聲明Canvas,這就相當於我們在自家畫室畫畫不用強調要用畫板,出去寫生時要特意帶一塊畫板。
Figure是Canvas上方的第一層,也是需要用戶來操作的應用層的第一層,在繪圖的過程中充當畫布的角色。當我們對Figure大小、背景色彩等進行設置的時候,就相當於是選擇畫布大小、材質的過程。因此,每當我們繪圖的時候,寫的第一行就是創建Figure的代碼。
Axes是應用層的第二層,在繪圖的過程中相當於畫布上的繪圖區的角色。一個Figure對象可以包含多個Axes對象,每個Axes都是一個獨立的坐標系,繪圖過程中的所有圖像都是基於坐標系繪制的。
輔助顯示層
輔助顯示層為Axes內的除了根據數據繪制出的圖像以外的內容,主要包括Axes外觀(facecolor)、邊框線(spines)、坐標軸(axis)、坐標軸名稱(axis label)、坐標軸刻度(tick)、坐標軸刻度標簽(tick label)、網格線(grid)、圖例(legend)、標題(title)等內容。
該層的設置可使圖像顯示更加直觀更加容易被用戶理解,但又並不會對圖像產生實質的影響。
圖像層
圖像層指Axes內通過plot、scatter、hist、contour、bar、barbs等函數根據數據繪制出的圖像。
由此我們可以看出
- Canvas位於最底層,用戶一般接觸不到
- Figure建立在Canvas之上
- Axes建立在Figure之上
- 坐標軸、圖例等輔助信息層以及圖像層都是建立在Axes之上
此外,對於輔助信息層和圖像層所包含的內容
- 線型的對象均是繼承於Line2D的子類
- 文字型的對象均是繼承於Text的子類
- 相關設置均可參考父類的設置方法
想觀看Matplotlib教學視頻,了解更多Matplotlib實用技巧可關注
微信公眾賬號: MatplotlibClass
今日頭條號:Matplotlib小講堂