首先一幅Matplotlib
的圖像組成部分介紹。html
在matplotlib中,整個圖像
爲一個Figure
對象。在Figure對象中能夠包含一個或者多個Axes
對象。每一個Axes(ax)對象都是一個擁有本身座標系統的繪圖區域。所屬關係以下:api
下面以一個直線圖來詳解圖像內部各個組件內容:函數
其中:title爲圖像標題,Axis爲座標軸, Label爲座標軸標註,Tick爲刻度線,Tick Label爲刻度註釋。各個對象關係能夠梳理成如下內容:code
圖像中全部對象均來自於Artist
的基類。htm
上面基本介紹清楚了圖像中各個部分的基本關係,下面着重講一下幾個部分的詳細的設置。對象
一個"Figure"意味着用戶交互的整個窗口。在這個figure中容納着"subplots"。繼承
當咱們調用plot時,matplotlib會調用gca()
獲取當前的axes繪圖區域,並且gca
反過來調用gcf()
來得到當前的figure。若是figure爲空,它會自動調用figure()
生成一個figure, 嚴格的講,是生成subplots(111)
。ip
Figuresget
Subplotsit
plt.subplot(221) # 第一行的左圖 plt.subplot(222) # 第一行的右圖 plt.subplot(212) # 第二整行 plt.show()
注意:其中各個參數也能夠用逗號,
分隔開。第一個參數表明子圖的行數;第二個參數表明該行圖像的列數; 第三個參數表明每行的第幾個圖像。
另外:fig, ax = plt.subplots(2,2)
,其中參數分別表明子圖的行數和列數,一共有 2x2 個圖像。函數返回一個figure圖像和一個子圖ax的array列表。
補充:gridspec命令能夠對子圖區域劃分提供更靈活的配置。
Tick Locators
Tick Locators 控制着 ticks 的位置。好比下面:
ax = plt.gca() ax.xaxis.set_major_locator(eval(locator))
一些不一樣類型的locators:
代碼以下:
import numpy as np import matplotlib.pyplot as plt def tickline(): plt.xlim(0, 10), plt.ylim(-1, 1), plt.yticks([]) ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['left'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.spines['bottom'].set_position(('data',0)) ax.yaxis.set_ticks_position('none') ax.xaxis.set_minor_locator(plt.MultipleLocator(0.1)) ax.plot(np.arange(11), np.zeros(11)) return ax locators = [ 'plt.NullLocator()', 'plt.MultipleLocator(1.0)', 'plt.FixedLocator([0, 2, 8, 9, 10])', 'plt.IndexLocator(3, 1)', 'plt.LinearLocator(5)', 'plt.LogLocator(2, [1.0])', 'plt.AutoLocator()', ] n_locators = len(locators) size = 512, 40 * n_locators dpi = 72.0 figsize = size[0] / float(dpi), size[1] / float(dpi) fig = plt.figure(figsize=figsize, dpi=dpi) fig.patch.set_alpha(0) for i, locator in enumerate(locators): plt.subplot(n_locators, 1, i + 1) ax = tickline() ax.xaxis.set_major_locator(eval(locator)) plt.text(5, 0.3, locator[3:], ha='center') plt.subplots_adjust(bottom=.01, top=.99, left=.01, right=.99) plt.show()
全部這些locators均來自於基類matplotlib.ticker.Locator。你能夠經過繼承該基類建立屬於本身的locator樣式。同時matplotlib也提供了特殊的日期locator, 位於matplotlib.dates.