Matplotlib 是一個 Python 的 2D繪圖庫,經過 Matplotlib,開發者能夠僅須要幾行代碼,即可以生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等。數組
用於建立出版質量圖表的繪圖工具庫函數
目的是爲Python構建一個Matlab式的繪圖接口工具
import matplotlib.pyplot as plt
spa
pyploy模塊包含了經常使用的matplotlib API函數rest
Matplotlib的圖像均位於figure對象中code
建立figure:fig = plt.figure()
對象
示例代碼:blog
# 引入matplotlib包 import matplotlib.pyplot as plt import numpy as np %matplotlib inline #在jupyter notebook 裏須要使用這一句命令 # 建立figure對象 fig = plt.figure()
運行結果:接口
<matplotlib.figure.Figure at 0x11a2dd7b8>
a,b 表示將fig分割成 a*b 的區域
c 表示當前選中要操做的區域,
注意:從1開始編號(不是從0開始)
plot 繪圖的區域是最後一次指定subplot的位置 (jupyter notebook裏不能正確顯示)
示例代碼:
# 指定切分區域的位置 ax1 = fig.add_subplot(2,2,1) ax2 = fig.add_subplot(2,2,2) ax3 = fig.add_subplot(2,2,3) ax4 = fig.add_subplot(2,2,4) # 在subplot上做圖 random_arr = np.random.randn(100) #print random_arr # 默認是在最後一次使用subplot的位置上做圖,可是在jupyter notebook 裏可能顯示有誤 plt.plot(random_arr) # 能夠指定在某個或多個subplot位置上做圖 # ax1 = fig.plot(random_arr) # ax2 = fig.plot(random_arr) # ax3 = fig.plot(random_arr) # 顯示繪圖結果 plt.show()
運行結果:
示例代碼:
import matplotlib.pyplot as plt import numpy as np plt.hist(np.random.randn(100), bins=10, color='b', alpha=0.3) plt.show()
運行結果:
示例代碼:
import matplotlib.pyplot as plt import numpy as np # 繪製散點圖 x = np.arange(50) y = x + 5 * np.random.rand(50) plt.scatter(x, y) plt.show()
運行結果:
示例代碼:
import matplotlib.pyplot as plt import numpy as np # 柱狀圖 x = np.arange(5) y1, y2 = np.random.randint(1, 25, size=(2, 5)) width = 0.25 ax = plt.subplot(1,1,1) ax.bar(x, y1, width, color='r') ax.bar(x+width, y2, width, color='g') ax.set_xticks(x+width) ax.set_xticklabels(['a', 'b', 'c', 'd', 'e']) plt.show()
運行結果:
示例代碼:
import matplotlib.pyplot as plt import numpy as np # 矩陣繪圖 m = np.random.rand(10,10) print(m) plt.imshow(m, interpolation='nearest', cmap=plt.cm.ocean) plt.colorbar() plt.show()
運行結果:
[[ 0.92859942 0.84162134 0.37814667 0.46401549 0.93935737 0.0344159 0.56358375 0.75977745 0.87983192 0.22818774] [ 0.88216959 0.43369207 0.1303902 0.98446182 0.59474031 0.04414217 0.86534444 0.34919228 0.53950028 0.89165269] [ 0.52919761 0.87408715 0.097871 0.78348534 0.09354791 0.3186 0.25978432 0.48340623 0.1107699 0.14065592] [ 0.90834516 0.42377475 0.73042695 0.51596826 0.14154431 0.22165693 0.64705882 0.78062873 0.55036304 0.40874584] [ 0.98853697 0.46762114 0.69973423 0.7910757 0.63700306 0.68793919 0.28685306 0.3473426 0.17011744 0.18812329] [ 0.73688943 0.58004874 0.03146167 0.08875797 0.32930191 0.87314734 0.50757536 0.8667078 0.8423364 0.99079049] [ 0.37660356 0.63667774 0.78111565 0.25598593 0.38437628 0.95771051 0.01922366 0.37020219 0.51020305 0.05365718] [ 0.87588452 0.56494761 0.67320078 0.46870376 0.66139913 0.55072149 0.51328222 0.64817353 0.198525 0.18105368] [ 0.86038137 0.55914088 0.55240021 0.15260395 0.4681218 0.28863395 0.6614597 0.69015592 0.46583629 0.15086562] [ 0.01373772 0.30514083 0.69804049 0.5014782 0.56855904 0.14889117 0.87596848 0.29757133 0.76062891 0.03678431]]
同時返回新建立的figure
和subplot
對象數組
生成2行2列subplot:fig, subplot_arr = plt.subplots(2,2)
在jupyter裏能夠正常顯示,推薦使用這種方式建立多個圖表
示例代碼:
import matplotlib.pyplot as plt import numpy as np fig, subplot_arr = plt.subplots(2,2) # bins 爲顯示個數,通常小於等於數值個數 subplot_arr[1,0].hist(np.random.randn(100), bins=10, color='b', alpha=0.3) plt.show()
運行結果:
等價於ax.plot(x, y, linestyle=‘--’, color=‘r’)
示例代碼:
import matplotlib.pyplot as plt import numpy as np fig, axes = plt.subplots(2) axes[0].plot(np.random.randint(0, 100, 50), 'ro--') # 等價 axes[1].plot(np.random.randint(0, 100, 50), color='r', linestyle='dashed', marker='o')
運行結果:
[<matplotlib.lines.Line2D at 0x11a901e80>]
設置刻度範圍
plt.xlim(), plt.ylim()
ax.set_xlim(), ax.set_ylim()
設置顯示的刻度
plt.xticks(), plt.yticks()
ax.set_xticks(), ax.set_yticks()
設置刻度標籤
ax.set_xticklabels(), ax.set_yticklabels()
設置座標軸標籤
ax.set_xlabel(), ax.set_ylabel()
設置標題
ax.set_title()
圖例
ax.plot(label=‘legend’)
ax.legend(), plt.legend()
loc=‘best’:自動選擇放置圖例最佳位置
示例代碼:
import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots(1) ax.plot(np.random.randn(1000).cumsum(), label='line0') # 設置刻度 #plt.xlim([0,500]) ax.set_xlim([0, 800]) # 設置顯示的刻度 #plt.xticks([0,500]) ax.set_xticks(range(0,500,100)) # 設置刻度標籤 ax.set_yticklabels(['Jan', 'Feb', 'Mar']) # 設置座標軸標籤 ax.set_xlabel('Number') ax.set_ylabel('Month') # 設置標題 ax.set_title('Example') # 圖例 ax.plot(np.random.randn(1000).cumsum(), label='line1') ax.plot(np.random.randn(1000).cumsum(), label='line2') ax.legend() ax.legend(loc='best') #plt.legend()
運行結果:
<matplotlib.legend.Legend at 0x11a4061d0>