2017-08-11 78 views
2

次要情節手。次要情節用手matplotlib

我指以下鏈接

http://nbviewer.jupyter.org/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/04.08-Multiple-Subplots.ipynb

創建軸的最基本的方法是使用plt.axes功能。正如我們以前所見,默認情況下,這會創建一個填充整個圖形的標準軸對象。 plt.axes也採用可選參數,該參數是圖形座標系中四個數字的列表。這些數字表示圖形座標系中的[left,bottom,width,height],範圍從圖左下角的0到圖右上角的1。例如,我們可以通過將x和y位置設置爲0.65(即,從65%的寬度開始,65%的高度開始在另一個軸的右上角創建一個插入軸)。圖),x和y的程度,以0.2(即,軸的尺寸是寬度爲20%和該圖的高度的20%):

ax1 = plt.axes() # standard axes 
ax2 = plt.axes([0.65, 0.65, 0.2, 0.2]) 

這裏例如上述我在位置期待AX2開始(0.65,0.65),因爲我們有底部和左側爲0.65和0.65,但我觀察(0.65,0.7)和lenght和高度爲0.2,即,右垂直線的位置0.85,但我在0.9觀測?爲什麼這是不同的。請解釋一下。

回答

0

給予plt.axes的數字是在圖單元,其中該圖中爲1個單位寬和1個單位喚起注意。
讓我強調的重要組成部分:

例如,我們可以通過x和y位置設置爲0.65創建另一個軸的右上角的插入軸(即,開始於65的寬度和高度的圖的)和x和y的程度,以0.2(即65%的%,軸的尺寸是寬度爲20%和圖的高度的20% )

也許圖像有助於更好地理解

enter image description here


這就是說存在當這個碼被用在IPython中或jupyter內嵌後端用一點點微妙。在這種情況下,輸出中顯示的圖形的大小可能與原始圖形略有不同,因爲它會被裁剪或展開以適應內部繪製的所有內容。這相當於savefigbbox_to_inched="tight"選項。因此,如果你想驗證的插曲確實放置在數字規模的65%和20%大,則需要在筆記本以外運行代碼的腳本,或保存數字plt.savefig("test.png")(不使用bbox_to_inched="tight"選項)。

最後一點:雖然add_axes可能是添加圖形座標軸的簡單選項,但通常需要在座標軸上添加一個插入點,即以座標軸寬度和高度的百分比代替圖形寬度,高度。這是可以做到如下:

import matplotlib.pyplot as plt 
from mpl_toolkits.axes_grid1.inset_locator import InsetPosition 

fig, ax1 = plt.subplots() 

ax2 = plt.axes([0, 0, 1, 1]) 
ip = InsetPosition(ax1, [0.4, 0.1, 0.3, 0.7]) 
         #posx, posy, width, height in coordinates of ax1 
ax2.set_axes_locator(ip) 

ax2.plot([1,2,3,4]) 
plt.show()