Python Matplotlib add_subplot 和 subplots_adjust詳解及程式碼詳細說明 配圖片說明
Table of Contents
add_subplot(self, *args, **kwargs)新增子圖
Matplotlib
Matplotlib是一個Python庫,用於通過使用Python指令碼建立二維圖形和圖表。
它有一個名為pyplot的模組,通過提供控制線條樣式,字型屬性,格式化軸等功能,使得繪圖變得容易。
支援各種各樣的圖形和圖形 - 即直方圖,條形圖,功率譜,誤差圖等
與NumPy一起使用,為MatLab提供了一個有效的開源替代方案。
也可以用於像PyQt和wxPython這樣的圖形工具包。
以上介紹選自https://www.yiibai.com/python_data_science/python_matplotlib.html
通常,通過新增以下語句將包匯入到Python指令碼中
import matplotlib.pyplot as plt
add_subplot(self, *args, **kwargs)新增子圖
說明、引數、返回值
Add an Axes to the figure as part of a subplot arrangement.
作為子圖佈置的一部分,將座標軸新增到圖中。
Call signatures:如何呼叫:
add_subplot(nrows, ncols, index, **kwargs)
add_subplot(pos, **kwargs)
add_subplot(ax)
方法說明位於:
C:\anaconda3\Lib\site-packages\matplotlib\figure.py模組下figure類方法 add_subplot(self, *args, **kwargs)
引數
Parameters
----------
*args
Either a 3-digit integer or three separate integers
describing the position of the subplot. If the three
integers are *nrows*, *ncols*, and *index* in order, the
subplot will take the *index* position on a grid with *nrows*
rows and *ncols* columns. *index* starts at 1 in the upper left
corner and increases to the right.
*pos* is a three digit integer, where the first digit is the
number of rows, the second the number of columns, and the third
the index of the subplot. i.e. fig.add_subplot(235) is the same as
fig.add_subplot(2, 3, 5). Note that all integers must be less than
10 for this form to work.
筆者翻譯:
引數
----------
* ARGS
3位整數或3個單獨的整數來描述子圖的位置。 如果三個
整數是* nrows *,* ncols *和* index *的順序,
子圖將採用 nrows * ncols 的網格上的* index *位置。
* index *從左上角的1開始,並向右增加。
* pos *是一個三位整數,其中第一個數字是
行數,第二個數字是列數和第三個數字是
子圖的索引。 即fig.add_subplot(235)與fig.add_subplot(2,3,5)相同。
請注意,希望這個格式正確工作,所有整數必須小於10。
舉個栗子,如果nrows = 3,ncols = 2,那麼這個網格(grid)大小為3*2,即總共有6個格子。
Index從左上角的1開始(不是零),依次向右增加。可以參考如下表格:
表格中的數字代表index,以下兩句程式碼是等效的
add_subplot(3, 2, 1) # 推薦此種寫法
add_subplot(321)
(3,2,1) |
(3,2,2) |
(3,2,3) |
(3,2,4) |
(3,2,5) |
(3,2,6) |
projection預設為rectilinear(矩形圖)
返回值
Returns
-------
axes : an `.axes.SubplotBase` subclass of `~.axes.Axes` (or a subclass of `~.axes.Axes`)
The axes of the subplot. The returned axes base class depends on
the projection used. It is `~.axes.Axes` if rectilinear projection
are used and `.projections.polar.PolarAxes` if polar projection
are used. The returned axes is then a subplot subclass of the
base class.
返回值
-------
axes:`~.axes.Axes`的子類`.axes.SubplotBase`(或`~.axes.Axes`的子類)
子圖的座標軸。 返回的軸基類取決於
使用的投影。 如果是直線投影,它是`~.axes.Axes`;
如果投影為polar則返回`.projections.polar.PolarAxes` 。
然後返回的軸是基類的子圖子類。
程式碼例項
以下程式碼出自add_subplot的說明,我改了個row的引數,加了點東西,方便大家看效果
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
fig=plt.figure('subplot demo') # 影象標題為'subplot demo',否則預設為'Figure 1'
# 接下來是在一個3行*2列的網格里新增子圖
# row = 3, col = 2,該網格可以擺放六張子圖index total為6
# fig.add_subplot(221) # row = 3, col = 2, index = 1
# equivalent but more general【與上面一行等價,但是這種更普遍】
ax1=fig.add_subplot(3, 2, 1) # row = 3, col = 2, index = 1
# add a subplot with no frame
ax2=fig.add_subplot(322, frameon=False) # row = 3, col = 2, index = 2
# add a polar subplot
fig.add_subplot(323, projection='polar') # row = 3, col = 2, index = 3
# add a red subplot that share the x-axis with ax1
fig.add_subplot(324, sharex=ax1, facecolor='red') # row = 3, col = 2, index = 4
# add a polar subplot
fig.add_subplot(325, projection='lambert') # row = 3, col = 2, index = 5
# add a red subplot, mollweide 即是橢圓ellipse
fig.add_subplot(326, projection='mollweide') # row = 3, col = 2, index = 6
#delete ax2 from the figure
fig.delaxes(ax2)
#add ax2 to the figure again
fig.add_subplot(ax2)
plt.show() # 顯示影象
效果圖:
帶括號的紫色文字是我後期加上去的,為了說明各個座標軸的index位置
更多資訊請參考
subplots_adjust
說明、引數
Adjusting the spacing of margins and subplots調整邊距和子圖的間距
subplots_adjust(self, left=None, bottom=None, right=None, top=None,
wspace=None, hspace=None)
Tune the subplot layout.調整子圖佈局。
The parameter meanings (and suggested defaults) are:引數含義(和建議的預設值)是:
left = 0.125 # the left side of the subplots of the figure圖片中子圖的左側
right = 0.9 # the right side of the subplots of the figure圖片中子圖的右側
bottom = 0.1 # the bottom of the subplots of the figure圖片中子圖的底部
top = 0.9 # the top of the subplots of the figure圖片中子圖的頂部
wspace = 0.2 # the amount of width reserved for space between subplots,
# expressed as a fraction of the average axis width
#為子圖之間的空間保留的寬度,平均軸寬的一部分
hspace = 0.2 # the amount of height reserved for space between subplots,
# expressed as a fraction of the average axis height
#為子圖之間的空間保留的高度,平均軸高度的一部分
加了這個語句,子圖會稍變小,因為空間也佔用座標軸的一部分
fig.subplots_adjust(wspace=0.5,hspace=0.5)
對比效果圖:
右圖是加加了subplots_adjust的
更多細節及程式碼例項可參考:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplots_adjust.html
在子圖座標軸ax4中畫出sin(x)的曲線
新增以下程式碼
# add a red subplot that share the x-axis with ax1
ax4 = fig.add_subplot(324, sharex=ax1, facecolor='red') # row = 3, col = 2, index = 4
# 在座標軸ax4中新增畫曲線圖y = sin(x)
# Compute the x and y coordinates for points on a sine curve
x = np.arange(0, 3 * np.pi, 0.1) # 建立一個一維陣列,[0, 3*pi),步長為0.1
y = np.sin(x)
# Plot the points using matplotlib - y = sin(x)
ax4.plot(x, y)
plt.title("sin wave form") # 為該曲線取名為"sin wave form"
完整程式碼
效果圖如上圖
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
fig=plt.figure('subplot demo') # 影象標題為'subplot demo',否則預設為'Figure 1'
fig.subplots_adjust(wspace=0.5,hspace=0.5) # 調整邊距和子圖的間距
# 接下來是在一個3行*2列的網格里新增子圖
# row = 3, col = 2,該網格可以擺放六張子圖index total為6
# fig.add_subplot(221) # row = 3, col = 2, index = 1
# equivalent but more general【與上面一行等價,但是這種更普遍】
ax1 = fig.add_subplot(3, 2, 1) # row = 3, col = 2, index = 1
# add a subplot with no frame
ax2 = fig.add_subplot(322, frameon=False) # row = 3, col = 2, index = 2
# add a polar subplot
ax3 = fig.add_subplot(323, projection='polar') # row = 3, col = 2, index = 3
# add a red subplot that share the x-axis with ax1
ax4 = fig.add_subplot(324, sharex=ax1, facecolor='red') # row = 3, col = 2, index = 4
# 在座標軸ax4中新增畫曲線圖y = sin(x)
# Compute the x and y coordinates for points on a sine curve
x = np.arange(0, 3 * np.pi, 0.1) # 建立一個一維陣列,[0, 3*pi),步長為0.1
y = np.sin(x)
# Plot the points using matplotlib - y = sin(x)
ax4.plot(x, y)
plt.title("sin wave form") # 為該曲線取名為"sin wave form"
# add a polar subplot
ax5 = fig.add_subplot(325, projection='lambert') # row = 3, col = 2, index = 5
# add a red subplot, mollweide 即是橢圓ellipse
ax6 = fig.add_subplot(326, projection='mollweide') # row = 3, col = 2, index = 6
#delete ax2 from the figure
fig.delaxes(ax2)
#add ax2 to the figure again
fig.add_subplot(ax2)
plt.show() # 顯示影象
相關文章
- nginx 詳解 – 詳細配置說明Nginx
- nginx 詳解 - 詳細配置說明Nginx
- session的詳細說明和用法Session
- mysql processlist詳細說明MySql
- winscp操作說明,winscp操作說明的詳細解讀
- mysqldump引數詳細說明MySql
- mysql replace into用法詳細說明MySql
- redis info命令詳細說明Redis
- Emacs詳細使用說明(轉)Mac
- memset函式詳細說明函式
- Flask-Limit使用詳細說明FlaskMIT
- Linux sed命令詳細說明Linux
- VNC安裝配置詳細說明VNC
- Nginx配置檔案詳細說明Nginx
- CocoaPods | iOS詳細使用說明iOS
- 總帳介面表詳細說明
- mydumper備份資料庫詳解(已詳細說明)資料庫
- 流量控制工具TC詳細說明
- sql server系統表詳細說明SQLServer
- mysql uninstall plugins 詳細說明MySqlPlugin
- jpa 方法 命名規則 詳細說明
- 前端meta標籤內容定義及使用說明,meta詳細說明,meta標籤使用前端
- Python中struct.pack()和struct.unpack()用法詳細說明PythonStruct
- 網路交換機功能和原理的詳細說明
- JQuery Datatables Columns API 引數詳細說明jQueryAPI
- 寬頻路由器的詳細說明路由器
- MySQL mysqldump命令的引數詳細說明MySql
- Oracle RAC中Srvctl命令詳細說明(轉)Oracle
- sql server系統表詳細說明(zt)SQLServer
- jquery datatables各引數詳細說明及簡單應用jQuery
- R語言-Knitr包的詳細使用說明R語言
- linux系統vi命令詳細使用說明Linux
- Android清單AndroidManifest詳細說明Android
- linux安裝mysql的步驟和方法詳細說明LinuxMySql
- C++中map的使用詳解說明C++
- CSS圖片上面新增文字說明CSS
- 詳細說明搜尋引擎優化的過程優化
- php中的var_dump()方法的詳細說明PHP