先看下Matplotlib實現的效果
python
是否是出現了也想敲一個的心動,那讓咱們一塊兒來了解Matplotlib吧數組
1.Windows系統安裝Matplotlib
進入到cmd的命令界面,輸入如下命令:
python -m pip install -U pip setuptools
python -m pip install matplotlibm
dom
2.Linux系統安裝Matplotlibide
sudo apt-get install python-matplotlib
sudo yum install python-matplotlib
Mac OSX 系統安裝 Matplotlib
可使用 pip 命令來安裝:sudo python -mpip install matplotlib
函數
首先咱們須要下載中文包:ShiHei字體包 將下載的字體包放置到項目目錄中
學習
import matplotlib import numpy as np from matplotlib import pyplot as plt zhfont1 = matplotlib.font_manager.FontProperties(fname="SimHei.ttf") x=np.array([1,2,3,4,5,6,7,8]) y = 2 * x + 5 plt.title("個人 - 測試", fontproperties=zhfont1) fontproperties 設置中文顯示,fontsize 設置字體大小 plt.xlabel("x 軸", fontproperties=zhfont1) plt.ylabel("y 軸", fontproperties=zhfont1) plt.plot(x, y,"-b") plt.show()
執行結果:
測試
從執行結果來看不難分析出pil.xlable實現的是定義x軸的默認顯示,ylabel定義的是y軸的顯示 ,plot(x,y,'-b')中定義的是x y軸的數據以及顯示的顏色和樣式信息。
其中具體的樣式和顏色信息的設置參數以下字體
字符 | plot函數中字符描述 |
---|---|
'-' | 實線樣式 |
'--' | 短橫線樣式 |
'-.' | 點劃線樣式 |
':' | 虛線樣式 |
'.' | 點標記 |
',' | 像素標記 |
'o' | 圓標記 |
'v' | 倒三角標記 |
'^' | 正三角標記 |
'<' | 左三角標記 |
'>' | 右三角標記 |
'1' | 下箭頭標記 |
'2' | 上箭頭標記 |
'3' | 左箭頭標記 |
'4' | 右箭頭標記 |
's' | 正方形標記 |
'p' | 五邊形標記 |
'*' | 星形標記 |
'h' | 六邊形標記 1 |
'H' | 六邊形標記 2 |
'+' | 加號標記 |
'x' | X 標記 |
'D' | 菱形標記 |
'd' | 窄菱形標記 |
'|' | 豎直線標記 |
'_' | 水平線標記 |
字符 | plot函數中顏色描述 |
---|---|
'b' | 藍色 |
'g' | 綠色 |
'r' | 紅色 |
'c' | 青色 |
'm' | 品紅色 |
'y' | 黃色 |
'k' | 黑色 |
'w' | 白色 |
咱們的目的重點不是編寫各類的圖像,而是瞭解繪圖的原理,經過學習可以繪製根據本身須要的圖像(學習matplotlib前建議要學習Numpy的知識)spa
#計算正弦曲線上點的 x 和 y 座標 x = np.arange(0, 3 * np.pi, 0.1) y = np.sin(x) plt.title("sine wave form") #使用 matplotlib 來繪製點 plt.plot(x, y) plt.show()
運行結果:
3d
該代碼中 x是一個數組,它是藉助numpy.arange()方法實現0-(3*圓周率)的範圍內每間隔0.1生成一個點
y = np.sin(x)
表示的是運用正弦函數生成與x軸點一 一對應的y軸的點,最後使用matplotlib的plot方法繪製出來相應的圖像。
實現多個圖像的繪製就要用的matplotlib的subplot()函數
#aubplot參數解釋 如下建立的是一個高度爲2,寬度爲1,的第1個圖像 plt.subplot(2, 1, 1) #將第一個圖像繪製出來 plt.plot(x,y_sin) plt.title('Sin') #aubplot參數解釋 如下建立的是一個高度爲2,寬度爲1,的第2個圖像 plt.subplot(2, 1, 2) #將第二個圖像繪製出來 plt.plot(x,y_cos) plt.title('Cos') plt.show()
運行結果:
繪製條形圖須要用到matplotlib的bar()函數生成條形圖,使用原來與上面的圖像繪製同樣,不一樣的是方法產生的效果
能夠經過如下代碼來進一步加深圖像繪製的印象
# 條形圖 bar x = [5,8,10] y = [12,16,6] x2 = [6,9,11] y2 = [6,15,7] plt.bar(x, y, align='center') plt.bar(x2, y2, color='y', align='center') plt.title('條形圖', fontproperties=zhfont1) plt.ylabel('Y 軸', fontproperties=zhfont1) plt.xlabel('X 軸', fontproperties=zhfont1) plt.show()
運行結果:
hist()函數能夠將將數據和bin參數做爲參數,而且可以轉化爲直方圖
# 直方圖 plt() a = np.array([21,99,1,46,88,77,15,24,11,61,66,67,68,30,41,55,18,31,90,26]) plt.hist(a, color='g', bins=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]) plt.title("histogram") plt.show()
運行結果:
關於matplotlib繪圖的經常使用配置說明
# 導入 matplotlib 的全部內容(nympy 能夠用 np 這個名字來使用) from pylab import * # 建立一個 8 * 6 點(point)的圖,並設置分辨率爲 80 figure(figsize=(8,6), dpi=80) # 建立一個新的 1 * 1 的子圖,接下來的圖樣繪製在其中的第 1 塊(也是惟一的一塊) subplot(1,1,1) X = np.linspace(-np.pi, np.pi, 256,endpoint=True) C,S = np.cos(X), np.sin(X) # 繪製餘弦曲線,使用藍色的、連續的、寬度爲 1 (像素)的線條 plot(X, C, color="blue", linewidth=1.0, linestyle="-") # 繪製正弦曲線,使用綠色的、連續的、寬度爲 1 (像素)的線條 plot(X, S, color="green", linewidth=1.0, linestyle="-") # 設置橫軸的上下限 xlim(-4.0,4.0) /plt.xlim(X.min()*1.1, X.max()*1.1) # 設置橫軸記號 xticks(np.linspace(-4,4,9,endpoint=True)) # 設置縱軸的上下限 ylim(-1.0,1.0) # 設置縱軸記號 yticks(np.linspace(-1,1,5,endpoint=True)) #添加圖例 能夠指定圖例的位置 plt.legend(loc='upper left', frameon=False) # 以分辨率 72 來保存圖片 # savefig("exercice_2.png",dpi=72) # 在屏幕上顯示 show()
下面是一個綜合運用的實例
# 繪製正弦波 # 計算正弦曲線上點的 x 和 y 座標 x = np.linspace(-np.pi, np.pi, 256,endpoint=True) y = np.sin(x) C,S = np.cos(x), np.sin(x) plt.title("sine wave form") # 使用 matplotlib 來繪製點 plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-", label="cosine") plt.plot(x, S, color="red", linewidth=2.5, linestyle="-", label="sine") #如下是對邊界的設置 plt.xlim(x.min()*1.1, x.max()*1.1) #如下是對x軸的記號設置 plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) #如下是對y軸的記號設置 plt.ylim(C.min()*1.1,C.max()*1.1) plt.yticks([-1, +1], [r'$-1$', r'$+1$']) #如下是對label圖例位置進行設置 plt.legend(loc='upper left', frameon=False) plt.show()
運行結果:
下面一個是使用matplotlib中的pie()函數實現的餅狀圖的實例:
n = 20 Z = np.random.uniform(0,1,n) plt.pie(Z) plt.show()
運行結果:
也能夠用來實現一些3D的圖像效果,下面是一個實現的實例:
from pylab import * from mpl_toolkits.mplot3d import Axes3D fig = figure() ax = Axes3D(fig) X = np.arange(-4, 4, 0.25) Y = np.arange(-4, 4, 0.25) X, Y = np.meshgrid(X, Y) R = np.sqrt(X**2 + Y**2) Z = np.sin(R) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='hot') plt.savefig('sample.png', bbox_inches="tight") show()
運行結果:
是否是