參考網(wǎng)址:官方文檔
參考網(wǎng)址:基于官方教程的matplotlib簡(jiǎn)介
整體畫(huà)圖流程
matplotlib以層次化的結(jié)構(gòu)組織對(duì)象,并提供了兩種操縱這些對(duì)象的方式:1.直接調(diào)用對(duì)象的成員函數(shù); 2.使用類(lèi)似matlab的命令行方式,第二種方式在數(shù)據(jù)分析中更加常用。在matplotlib.pyplot模塊中封裝好了很多命令行風(fēng)格的函數(shù),導(dǎo)入該模塊的一般寫(xiě)法:
import matplotlib.pyplot as plt
第一步:在畫(huà)圖之前,要準(zhǔn)備好白紙
matplotlib將畫(huà)板組織成兩個(gè)對(duì)象figure和axes,在一個(gè)figure上可以創(chuàng)建多個(gè)axes,而axes只能屬于某一個(gè)figure,畫(huà)圖最終是在axes上進(jìn)行繪制的。關(guān)于matplotlib中的幾個(gè)關(guān)鍵概念可以參考General Concepts
figure對(duì)象和axes對(duì)象
- 創(chuàng)建白紙:
fig = plt.figure(num=1, figsize=(x,y))圖片的編號(hào)以及大小等屬性 - 創(chuàng)建子圖:
方式一:plt.subplot(211)
2表示兩個(gè)子圖,11:所在位置(第1行,第1列)。(plt 針對(duì)當(dāng)前子圖或者全局操作,會(huì)自動(dòng)在當(dāng)前的figure上創(chuàng)建子圖。)
方式二:
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212) - 如果要?jiǎng)?chuàng)建很多個(gè)子圖,可以直接使用
fig, axes = plt.subplots(2, 3) - 注:如果figure()和subplot()沒(méi)有定義的話,都默認(rèn)為figure(1)和subplot(111)
如果要?jiǎng)?chuàng)建很多個(gè)子圖,可以這樣定義fig, axes = plt.subplots(2, 3)
第二步:正式畫(huà)圖
再次強(qiáng)調(diào)繪制內(nèi)容(畫(huà)圖、標(biāo)題、文本等)都是畫(huà)在子圖axes之上的。這里為了凸顯出整體流程,只舉最簡(jiǎn)單的例子。具體繪制細(xì)節(jié)放在文章下一部分介紹。
繪制同樣有兩種方式:
-
plt.plot( )這種方式會(huì)自動(dòng)繪制在當(dāng)前子圖上 -
axes.plot()把圖畫(huà)在指定的子圖上
第三步:顯示&保存圖片
- 顯示圖片
plt.show( )所有的圖紙都會(huì)顯示 - 存儲(chǔ)圖片``
詳解plot( )
參考網(wǎng)址:官方文檔matplotlib.pyplot.plot
通常的調(diào)用方法:
plot([x], y, [fmt], **kwargs)
- 沒(méi)有x的話會(huì)根據(jù)y的長(zhǎng)度自動(dòng)生成,
- fmt = '[color][marker][line]' 用縮寫(xiě)定義線條風(fēng)格的三個(gè)方面:顏色,點(diǎn)的形狀,連線的形狀。也可以在**kwargs中分別指定。(具體支持哪些縮寫(xiě)可以參考官方文檔列的表格)。
- **kwargs 中可以是任意一個(gè)Line2D的屬性
- 該函數(shù)返回的是一個(gè)Line2D的對(duì)象,這個(gè)對(duì)象包含了和一條線相關(guān)的所有信息,畫(huà)一條線就相當(dāng)于創(chuàng)建一個(gè)Line2D對(duì)象。
最后舉一個(gè)基本的例子
plt.plot(range(10),'bo--', label='example',linewidth='2')
plt.legend(loc='best') #必須有plt.legend()才能顯示圖標(biāo),在這里可以對(duì)圖標(biāo)顯示加以控制
plt.title('example')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.grid(True)
plt.show()
