數據可視化--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

  1. Matplotlib是一個python的包
  2. 用於2D繪圖(也可以繪製3D,但是要安裝一些支持的工具包)
  3. 非常強大非常流行
  4. 有很多擴展

下面來實現一個很簡單的畫圖操作,可以認為是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空間對象基礎

TAG:Python | 数据分析 | 统计学 |