#導入matplotil庫,用於畫圖 import matplotlib.pyplot as plt #導入numpy庫,用於數據處理 import numpy as np #畫圖 data = np.arange(10) plt.plot(data) #使圖像展現出來 plt.show()
上面的代碼展現了最簡單的圖片繪製。總結起來有一下幾個步驟:html
data = np.arange(10)
生成從0-9的整數。plt.show()
,在PyCharm中不會自動彈出繪製出來的圖形,須要在PyCharm界面的最右側點擊‘Sciview’按鈕進行查看。另在,若是是在Jupyter中繪圖,須要加入代碼matplotlib notebook
,若是是在Ipython中運行,則須要加入代碼matplotlib
。上述代碼的執行效果以下所示。python
#導入matplotil庫,用於畫圖 import matplotlib.pyplot as plt #導入numpy庫,用於數據處理 import numpy as np #畫圖 data = np.arange(10) #第一種生成子圖的方式 fig = plt.figure() #生成一個圖片對象 #將fig劃分紅2行2列4個子圖 ,a1表示第1個子圖,對應subplot的三個參數。 a1 = fig.add_subplot(2,2,1) #在生成兩個子圖 a2 = fig.add_subplot(2,2,2) a3 = fig.add_subplot(2,2,3) #繪圖 plt.plot(np.random.randn(50).cumsum(),'k--') _ = a1.hist(np.random.randn(100),bins=20,color = 'k',alpha=0.3) a2.scatter(np.arange(30),np.arange(30)+2*np.random.randn(30)) #第二種生成子圖的方式。 #生成2行3列的子圖,sharex表示全部子圖橫座標範圍相同 fig,axs = plt.subplots(2,3,sharex=True) #對在第1行第2列的子圖進行繪製 axs[0,1].hist(np.random.randn(100),bins=20,color = 'k',alpha=0.3) #使圖像展現出來 plt.show()
經常使用的生成子圖的方式有兩種。git
對於第一種,先生成一個圖片對象,而後在圖片對象中添加子圖。以後在自圖上進行繪製。這裏注意,若是直接執行plt.plot
,默認是在最後生成的一張子圖上進行繪製。好比本例中使用plt.plot(np.random.randn(50).cumsum(),'k--')
繪製的圖出如今了第子圖中。‘k--’線條的一些屬性,在下一節具體列出。也能夠經過'子圖名稱.XXX'的方法來具體指定在哪一個子圖中繪製。如本例中使用a1.hist()
命令在a1中繪製了柱狀圖。常見的圖片類型見下表,更豐富的指令請參見官方文檔。地址請點我!github
關鍵詞 | 圖片種類 |
---|---|
angle_spectrum | 角度光譜 |
bar | 條形圖 |
barh | 水平條圖 |
hist | 直方圖 |
hist2d | 2D直方圖 |
phase_spectrum | 相位頻譜 |
pie | 餅圖 |
ploar | 極性圖 |
psd | 功率光譜密度 |
scatter | 散點圖 |
specgram | 光譜圖 |
stackplot | 堆疊區域圖 |
step | 步驟圖 |
第一種的圖片效果以下所示;api
axs[0,1]
的方式進行指定,[0,1]參數表示第一行第二列的子圖(行和列的計數從零開始)。效果以下所示。
plt.subplots_adjust()
函數來調整子圖間距。#導入matplotil庫,用於畫圖 import matplotlib.pyplot as plt #導入numpy庫,用於數據處理 import numpy as np from numpy.random import randn #畫圖 data = np.random.randn(30).cumsum() plt.plot(data,color='k', linestyle='dashed', marker='o', label='One') plt.plot(data,'r-', drawstyle='steps-post', label='Two') #生成圖例 plt.legend(loc='best') plt.show()
上面的代碼中有兩個plt.plot,因此能夠在同一個圖中繪製兩條不一樣的線。iview
效果以下所示:dom
# 導入matplotil庫,用於畫圖 import matplotlib.pyplot as plt # 導入numpy庫,用於數據處理 import numpy as np from numpy.random import randn # 畫圖 fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.plot(np.random.randn(1000).cumsum()) # 設置x軸上,哪些座標處須要加刻度 ticks = ax.set_xticks([0, 250, 500, 750, 1000]) # 設置刻度的內容 labels = ax.set_xticklabels(['one', 'two', 'three', 'four', 'five'], rotation=45, fontsize='small') # 設置橫座標的名稱 ax.set_xlabel('Stages') plt.show()
效果以下所示。函數
# 導入matplotil庫,用於畫圖 import matplotlib.pyplot as plt # 導入numpy庫,用於數據處理 import numpy as np from numpy.random import randn from datetime import datetime import pandas as pd fig = plt.figure() ax = fig.add_subplot(1, 1, 1) data = pd.read_csv('C:/Users/Nighthink/Downloads/pydata-book/examples/spx.csv', index_col=0, parse_dates=True) spx = data['SPX'] spx.plot(ax=ax, style='k-') crisis_data = [ (datetime(2007, 10, 11), 'Peak of bull market'), (datetime(2008, 3, 12), 'Bear Stearns Fails'), (datetime(2008, 9, 15), 'Lehman Bankruptcy') ] for date, label in crisis_data: ax.annotate(label, xy=(date, spx.asof(date) + 75), xytext=(date, spx.asof(date) + 225), arrowprops=dict(facecolor='black', headwidth=4, width=2, headlength=4), horizontalalignment='left', verticalalignment='top') # Zoom in on 2007-2010 ax.set_xlim(['1/1/2007', '1/1/2011']) ax.set_ylim([600, 1800]) ax.set_title('Important dates in the 2008-2009 financial crisis')
效果以下所示:post
執行代碼plt.savegif('fig.png',dpi=400,bbox_inches='tight')
能夠將圖保存成png格式,文件名是fig,dpi參數表示每英寸點數的分辨率,bbox_inches參數能夠用來控制實際圖像四周的空白。spa