1.簡介html
matplotlib是python的一個2D繪圖庫,它能夠在不一樣平臺上地使用多種通用的繪圖格式(hardcopy formats)和交互環境繪製出出版物質量級別的圖片。matplotlib能夠經過python腳本,python/ipython shell,web application servers以及six圖像用戶接口工具箱來調用。node
其官方地址:http://matplotlib.org/index.htmlpython
2.使用案例web
2.1 繪製決策樹*shell
*該代碼來自於《機器學習實戰》api
1 # -*- coding: utf-8 -*- 2 """ 3 Created on Thu Mar 17 20:24:41 2016 4 5 @author: Dale 6 """ 7 8 import matplotlib.pyplot as plt 9 10 decisionNode = dict(boxstyle = "sawtooth", fc = "0.8") 11 leafNode = dict(boxstyle = "round4", fc = "0.8") 12 arrow_args = dict(arrowstyle = "<-") 13 14 def plotNode(nodeTxt, centerPt, parentPt, nodeType): 15 ''' 16 下面這個函數原型是class matplotlib.axes.Axes()的成員函數annotate() 17 該函數的做用是爲繪製的圖上指定的數據點xy添加一個註釋nodeTxt,註釋的位置由xytext指定 18 其中,xycoords來指定點xy座標的類型,textcoords指定xytext的類型,xycoords和textcoords的取值以下: 19 ‘figure points’:此時座標表示座標原點在圖的左下角的數據點 20 ‘figure pixels’:此時座標表示座標原點在圖的左下角的像素點 21 ‘figure fraction’:此時取值是小數,範圍是([0, 1], [0, 1]) 22 ,在圖的最左下角時xy是(0,0), 最右上角是(1, 1) 23 ,其餘位置按相對圖的寬高的比例取小數值 24 ‘axes points’:此時座標表示座標原點在圖中座標的左下角的數據點 25 ‘axes pixels’:此時座標表示座標原點在圖中座標的左下角的像素點 26 ‘axes fraction’:相似‘figure fraction’,只不過相對圖的位置改爲是相對座標軸的位置 27 ‘data’:此時使用被註釋的對象所採用的座標系(這是默認設置),被註釋的對象就是調用annotate這個函數 28 那個實例,這裏是ax1,是Axes類,採用ax1所採用的座標系 29 ‘offset points’:此時座標表示相對xy的偏移(以點的個數計),不過通常這個是用在textcoords 30 ‘polar’:極座標類型,在直角座標系下面也能夠用,此時座標含義爲(theta, r) 31 32 參數arrowprops含義爲鏈接數據點和註釋的箭頭的類型,該參數是dictionary類型,該參數含有一個 33 名爲arrowstyle的鍵,一旦指定該鍵就會建立一個class matplotlib.patches.FancyArrowPatch類的實例 34 該鍵取值能夠是一個可用的arrowstyle名字的字符串,也能夠是可用的class matplotlib.patches.ArrowStyle類的實例 35 具體arrowstyle名字的字符串能夠參考 36 http://matplotlib.org/api/patches_api.html#matplotlib.patches.FancyArrowPatch 37 裏面的class matplotlib.patches.FancyArrowPatch類的arrowstyle參數設置 38 39 函數返回一個類class matplotlib.text.Annotation()的實例 40 ''' 41 createPlot.ax1.annotate(nodeTxt, xy = parentPt, xycoords = 'axes fraction', va = 'center', ha = 'center', bbox = nodeType, arrowprops = arrow_args) 42 43 def createPlot(): 44 fig = plt.figure(1, facecolor='white') #建立新的figure 1, 背景顏色爲白色 45 fig.clf() #清空figure 1的內容 46 ''' 47 在新建的figure 1裏面建立一個1行1列的子figure的網格,並把網格里面第1個子figure的Axes實例axes返回給ax1做爲函數createPlot()的屬性 48 ,這個屬性ax1至關於一個全局變量,能夠給plotNode函數使用 49 ''' 50 createPlot.ax1 = plt.subplot(111, frameon=False) 51 plotNode('a decision node', (0.5, 0.1), (0.1, 0.5), decisionNode) 52 plotNode('a leaf node', (0.8, 0.1), (0.3, 0.8), leafNode) 53 plt.show()
運行createPlot()函數的結果以下:app