matplotlib API入門python
使用matplotlib的辦法最經常使用的方式是pylab的ipython,pylab模式還會向ipython引入一大堆模塊和函數提供一種更接近與matlab的界面,matplotlib API函數位於matplotlib.pyplot模塊中,其一般的引入約定是:import matplot.pyplot as plt數組
一、Figure和Subplotdom
matplotlib的圖像都位於Figure對象中,你能夠用plt.figure建立一個新的Figure,不能經過空Figure繪圖,必須用add_subplot建立一個或多個sub_plot才行函數
>>> import matplotlib.pyplot as plt >>> fig=plt.figure() >>> ax1=fig.add_subplot(2,2,1) >>> ax2=fig.add_subplot(2,2,2)
你能夠在matplotlib的文檔中找到各類圖表類型,因爲根據特定佈局建立Figure和subplot是一件常見的任務,因而便出現一個更爲方便的方法:plt.subplots,它能夠建立一個新的Figure,且返回一個含有已建立的subplot對象的numpy數組。工具
pandas中的繪圖函數佈局
一、線型圖spa
Series和DataFrame都有一個用於生成各種圖標的plot方法,默認狀況下,他們所生成的是線型圖,該Series的索引會被傳給matplotlib,並用於繪製x軸3d
>>> from pandas import * >>> import numpy as np >>> import matplotlib.pyplot as plt >>> s=Series(np.random.randn(10).cumsum(),index=np.arange(0,100,10)) >>> s.plot() >>> plt.show(s.plot())
DataFrame的plot方法會在一個subplot中爲各列繪製一條直線,並自動建立圖例:code
>>> df=DataFrame(np.random.randn(10,4).cumsum(0),columns=['A','B','C','D'],index=np.arange(0,100,10)) >>> plt.show(df.plot())
二、柱狀圖對象
在生成的線型圖的代碼中加上kind='bar'(垂直樹狀圖)或 kind='barch'(水平柱狀圖)便可生成柱狀圖,此時,Series和DataFrame的索引將會被用做X或Y的刻度。
data=Series(np.random.rand(16),index=list('abcdefghijklmnop')) >>> data.plot(kind='bar',ax=axes[0],color='k',alpha=0.7) <matplotlib.axes._subplots.AxesSubplot object at 0x06FA9FD0> >>> data.plot(kind='bar',ax=axes[1],color='k',alpha=0.7) <matplotlib.axes._subplots.AxesSubplot object at 0x049D02D0>
對於DataFrame,柱狀圖會將每一行的值分爲一組
>>> df=DataFrame(np.random.rand(6,4),index=['one','two','three','four','five','six'],columns=['A','B','C','D']) >>> df.columns.name='Genus' >>> df Genus A B C D one 0.610197 0.132144 0.919492 0.432829 two 0.493323 0.899049 0.438195 0.300159 three 0.305448 0.404252 0.374776 0.924542 four 0.982561 0.233063 0.135196 0.385672 five 0.613274 0.574884 0.684504 0.123448 six 0.791576 0.062249 0.597673 0.058899 >>> plt.show(df.plot(kind='bar'))
三、直方圖和密度圖
直方圖是一種能夠對值頻率進行離散化顯示的柱狀圖,另外一種是密度圖,它是經過計算可能會產生觀測數據的連續機率分佈的估計而產生的。通常過程是將該分佈近似爲一組核分佈,所以,密度圖也被稱做KDE圖,調用plt時加上kind='kde'便可生成一張密度圖。
四、散佈圖
散佈圖是觀察兩個一維數據序列之間的關係的有效手段,matplotlib的scatter方法是繪製散佈圖的主要方法。
>>> from pandas import * >>> import numpy as np >>> import matplotlib.pyplot as plt >>> macro=read_csv(r'D:\書籍與代碼資料\利用python進行數據分析代碼和數據集\ch08\macrodata.csv') >>> data=macro[['cpi','m1','tbilrate','unemp']] >>> trans_data=np.log(data).diff().dropna() >>> trans_data[-5:] cpi m1 tbilrate unemp 198 -0.007904 0.045361 -0.396881 0.105361 199 -0.021979 0.066753 -2.277267 0.139762 200 0.002340 0.010286 0.606136 0.160343 201 0.008419 0.037461 -0.200671 0.127339 202 0.008894 0.012202 -0.405465 0.042560 >>> plt.scatter(trans_data['m1'],trans_data['unemp']) <matplotlib.collections.PathCollection object at 0x0525C6D0> >>> plt.show()
在探索式的數據分析中,同時觀察一組變量的散佈圖是頗有意義的,這也被稱爲散佈矩陣;pandas提供了一個能從DataFrame建立散佈圖矩陣的scatter_matrix函數。
Python圖形化工具生態系統介紹
Chaco:適合用複雜的圖形化方法表達數據的內部關係,對交互支持較多與適合
mayayi:基於C++圖形庫的圖形工具包