數據可視化--Matplotlib
相關文章:
數據可視化--Seaborn
數據科學--numpy的基本使用
數據科學--Pandas基本使用
數據分析--百年大電影
目錄:
No.1 什麼是Matplotlib
No.2 Matplotlib繪圖之plot
No.3 Matplotlib繪圖之subplot
No.4 Pandas繪圖之Series
No.5 Pandas繪圖之DataFrame
No.6 直方圖和密度圖
No.1 什麼是Matplotlib
- Matplotlib是一個python的包
- 用於2D繪圖(也可以繪製3D,但是要安裝一些支持的工具包)
- 非常強大非常流行
- 有很多擴展
下面來實現一個很簡單的畫圖操作,可以認為是matploylib的"hello, world !"
我們還是用notebook來操作一下。
看起來是不是很簡單,x是在2倍的pi之間取值,取值數量是100,y是用x的值傳入sin函數裡面。
生成這個圖像,但其實後台實現挺複雜的。
下面看看Matplotlibde架構。
Backend:主要處理把圖顯示到哪裡和畫到哪裡
Artist:圖像顯示成什麼樣子
Scripting:pyplot,python語法和API
No.2 Matplotlib繪圖之plot
plot這個方法是Matplotlib裡面很基本的一個畫圖方法,我們還是進入notebook來操作。
首先畫一個很簡單的圖。
a是一個python的list,有三個取值。那麼這張圖y坐標取值是1-3,x是0-2,這裡a這個list值是1,2,3.所以這裡他就是y坐標按照a的值進行取值,x坐標就是按照a這個list的index取值也就是0,1,2.這樣就畫出了這個圖。
現在再把圖改一下。
這裡就改變了,a的值現在是x軸,b的值現在是y軸。這裡有個注意點,我們每次畫圖都要使用plt.show(),這個很麻煩,其實可以省掉這一步,用一個magic method。
加上%matplotlib inline就可以避免每次都要操作plt.show()。
除了畫出這樣的圖,還可做出一點小小的修改。比如:
直線變成了星號。
還可以變成虛線
同時還可以改變顏色。
我們在這張圖的基礎上再加2條線。
再指定幾條線的風格。
是不是變了。
下面再舉一個更加直觀的例子,首先生成兩組數據。
t是0-2之間的數字,每個數字之間間隔0.1,s是每一個t的值乘以pi在傳給sin函數。
然後畫圖。
是不是很有趣。
再給這個圖設置一個x,y軸的label
最後再把這個圖的信息全部補全。
No.3 Matplotlib繪圖之subplot
首先subplot可以把上面的圖切分開來,先看一個subplot方法的例子。
其實這就是把整個圖像切分成2行1列,拿可不可以變成1行2列呢?肯定可以,把2,1,1改成2,2,1 。把2,1,2改成2,2,2就可以了。看看結果是什麼樣子。
實際上這麼改,2,2,1是表示2行2列,只是這裡只有一行而已,所以只顯示1行2列。可以直接在後邊再加上。
是不是第2行就出來了,還有一個subplots方法也非常的方便。看看如何使用。
2,2就表示畫的圖是2行2列,ax是一個數組,一共四個value,每一個代表一幅圖,現在用之前生成的數據做圖看看。
No.4 Pandas繪圖之Series
還是一樣,直接畫圖,和之前幾乎沒有什麼區別。
這裡面的cumsum是累計求和的意思,比如a=[1,2,3,4,5], a.cumsum=[1,3,5,10,15].
這個繪圖裡面的grid是現實標尺線,label就是圖例,title就是圖像的名稱,style是線的類型。
那現在在這張圖裡面再加一幅圖。
代碼也非常的簡單。下面在用subplots再來試一下看看。
2行1列的圖就出來了,這裡使用ax索引到某一個圖來繪製,也可以直接使用Series來plot。
當然我們也可以畫柱狀圖,來試試看。
No.5 Pandas繪圖之DataFrame
首先創建一個DataFrame。
畫圖的話,前面Series直接使用plot畫圖,那麼DataFrame呢?
好像也可以啊,圖例的a,b,c,d就是dataframe裡面的a,b,c,d嘛,所以這其實就是每一列畫一條曲線,組成這個圖。那麼把kind換成bar再看看。
這個柱狀圖好像更好的展示了a,b,c,d的情況啊。還可以改變圖的方向。
還可以把4列數據進行堆疊。
這樣看著也很清爽啊。還可以做一個填充的圖出來。
還可以選取某一行來做圖。比如選擇第五行做圖。
還可以把每一行的數據展示到一張圖裡面。
這裡用了循環,但是也可以不用循環,有更便捷的方法
先把DataFrame的行和列進行轉換不就好操作了嘛。
那麼既然每一行可以這樣做圖,那麼每一列肯定也是可以的,比如單獨拿出某一列數據做圖。
No.6 直方圖和密度圖
直方圖
先創建一個Series,然後再繪製直方圖。
這裡的直方圖和之前的柱狀圖好像很類似,但是意思是不大一樣的,這裡表示的是一種分布情況,這個可能不夠清楚,再舉一個例子。
仔細看這個圖,x軸是0-9,y軸是個數,每一個數字出現的次數,也就是分布情況,那麼再回去看看上一張圖,比如在0-1的取值區間內分布了大概400個數字,所以這個直方圖講的是一個分布情況,這個和之前的柱狀圖是有區別的。
為了更好的說明,再做一步操作。
仔細看看,這個re是一個tuple,有3個value,第一個是表示頻率,也就是出現的次數,第二個就是取值間隔,第三個就是畫出來的10個直方。
密度圖
還是使用之前的s來演示。
這個就是一個密度圖,這個看起來和直方圖很類似。這個圖x軸就是取值範圍,y軸就是某個值出現的次數佔到總數的百分比,比如0附近的取值佔了總取值的40%左右。
-----------------------------------------------------------------------------
推薦閱讀:
※python 函數
※國內對 Heroku 這個平台評價怎樣?
※終於,SciPy 1.0 版發布了
※MySQL書單推薦
※空間數據可視化筆記——simple features空間對象基礎