Python中的Matplotlib繪圖
Matplotlib是Python的繪圖工具,用Matplotlib可以繪製出我們想要的各類2D圖。Matplotlib可用於python指令碼、jupyter notebook、web等。個人認為在Jupyter Notebook中,Matplotlib表現非常棒哈哈!!
這篇隨筆記錄下關於最近學習Python資料分析繪圖的知識點。(並非全面細緻,僅供參考)
1.Matplotlib的基礎構成
1.1figure
就像我們生活當中畫畫一樣,畫圖需要我們提供一個畫板,新增各種元素,figure則是充當這麼一個角色(物件)。
import matplotlib.pyplot as plt fig = plt.figure()
1.2axes
Matplotlib是一個2D繪相簿,我們類似於數學將這個畫板分成x和y這兩個座標軸。使用axes設定x和y軸。
1 fig = plt.figure() 2 ax = fig.add_subplot(221) 3 ax.set(xlim=[0,4], ylim=[0, 10], title='An Axes',ylabel='Y', xlabel='X') 4 plt.show()
執行結果如下圖所示:
1.3xlim和ylim方法
xlim和ylim方法從字面意思也可以理解,就是給這個圖設定了座標軸範圍。
plt.plot(x**3,y) plt.xlim(0,2) plt.ylim(0,7) plt.show()
執行結果如下圖:
1.4座標軸標籤
座標軸標籤的方法有xlabel和ylabel,其中的color代表顏色,fontsize代表字型大小,rotation表示旋轉角度。
1.5標題
plt.title()方法,方法同坐標軸標籤,附加:loc=‘left/right/center’,表示標題位於左右中的哪個位置。
結合座標軸標籤和標題,舉一個例子:
import matplotlib.pyplot as plt axes = plt.subplot(111) axes.plot(x,y) axes.set_ylabel('Y',fontsize=20,color='red',rotation=90) axes.set_xlabel('X',fontdict={ 'fontsize':20, 'color':'blue' }) plt.title('X&Y',color='green',fontsize=20) plt.show()
執行結果如下:
基礎的畫圖方法大概就是這些,其實中間還有一些小細節,可以自行去網上或者相關書籍查閱。
2.基本的2D圖
2.1散點圖
顧名思義,散點圖只有點沒有線,這裡可以藉助random和numpy來繪圖。
x = np.arange(10) y = np.random.randn(10) plt.scatter(x, y, color='blue', marker='*') plt.show()
執行結果如下圖:
2.2柱狀圖
柱狀圖有垂直的和水平的這兩種。程式碼圖形如下:
np.random.seed(1) x = np.arange(10) y = np.random.randn(10) fig, axes = plt.subplots(ncols=2, figsize=plt.figaspect(1./2)) vert_bars = axes[0].bar(x, y, color='lightblue', align='center') horiz_bars = axes[1].barh(x, y, color='lightblue', align='center') axes[0].axhline(0, color='red', linewidth=2.5) axes[1].axvline(0, color='blue', linewidth=2.5) plt.show()
2.3餅形圖
餅形圖一般是根據各個label的百分比畫餅。各個標籤的百分比之和為100%。對於這部分我個人理解的還是少,也只是根據書上和網上大概知道一些成形的程式碼,如需細究,還請網上查詢hh!
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' sizes = [15, 30, 45, 10] explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs') fig1, (ax1, ax2) = plt.subplots(2) ax1.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True) ax1.axis('equal') ax2.pie(sizes, autopct='%1.2f%%', shadow=True, startangle=90, explode=explode, pctdistance=1.12) ax2.axis('equal') ax2.legend(labels=labels, loc='upper right') plt.show()
其實還有一些圖表,例如泡泡圖,箱型圖,輪廓圖,包括3D圖等等,都可以用Matplotlib繪畫出來,這就是鄙人的知識盲區了,若您想了解其他相關知識,煩請參考其他部落格,小白的我,實在不會什麼,告辭!