matplotlib數據可視化入門-python

matplotlib是matlab的python api接口,可以製作出高質量的2D以及3D圖形。操作簡單,只需幾行代碼就可以搞定大部分的數據可視化需求,實乃幸事。本文假設我們已經安裝了必備的庫。

一、創建figure和axes對象

import matplotlib.pyplot as plt
import pandas as pd
#創建figure對象,默認我們可以不用傳入任何參數
fig = plt.figure()
#創建axes對象
ax = fig.add_subplot(1, 1, 1)

我們使用上面的兩行代碼就可以創建出一個畫圖的面板,就像打開windows下面的畫圖軟件一模一樣,如下圖所示:
這裏寫圖片描述
ax = fig.add_subplot(1, 1, 1) 這句代碼的意思就是我們將figure對象分成一行一列,也就是隻有一個畫圖框,然後我們選中了這個畫圖框。
可以簡單的畫一條線試試:

二、製作圖形

ax.plot(range(5))

上面的代碼就可以在畫框中畫出一條優美的藍色對角線。
接下來,我們還可以設置圖表的名稱,圖表的x軸刻度,y軸的刻度,圖例等等。

ax.set_title(u'這裏是標題')
ax.set_xlabel(u'這裏是x軸的名稱')
ax.set_ylabel(u'這裏是y軸的名稱')

運行上面代碼我們會看到下面的圖形:
這裏寫圖片描述
發現並不能顯示中文,原因是matplotlib在默認情況下默認是不會顯示中文的,需要我們進行相應的設置,設置方法如下:

import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
#在導入matplotlib時就設置字體
font = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\STZHONGS.TTF')
#創建figure對象,默認我們可以不用傳入任何參數
fig = plt.figure()
#創建axes對象
ax = fig.add_subplot(1, 1, 1)

我在寫這段代碼的時候是在windows環境下的。windows下的字體都在c:\windows\fonts\這個目錄下,進入這個目錄,隨便選一箇中文字體就可以,非常的簡單。
接下來,在添加中文的代碼中也做一些調整:

import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
#在導入matplotlib時就設置字體
font = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\STZHONGS.TTF')
#創建figure對象,默認我們可以不用傳入任何參數
fig = plt.figure()
#創建axes對象
ax = fig.add_subplot(1, 1, 1)
ax.plot(range(5))
ax.set_title(u'這裏是標題', fontproperties=font)
ax.set_xlabel(u'這裏是x軸的名稱', fontproperties=font)
ax.set_ylabel(u'這裏是y軸的名稱', fontproperties=font)

上面的代碼運行的結果如下所示:
這裏寫圖片描述
中文非常完整的顯示了出來,與我們預期的結果一模一樣。

三、製作圖例

一般情況下,我們會在同一個畫圖板中製作多個圖形,已進行數據之間的比較,比如下圖所示:
這裏寫圖片描述
在圖中我們畫了兩條線,顏色各不相同。可是,上面並沒有明顯的指出每條線代表的是什麼意思。這時,我們就需要用到圖例。圖例的就是對每種不同顏色線條的說明,如下圖所示:
這裏寫圖片描述
在圖表的右上角有了標註,那就是圖例,指出了每種顏色的線條分別屬於哪種標籤,簡潔明瞭。完整代碼如下所示:

import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
#在導入matplotlib時就設置字體
font = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\STZHONGS.TTF')
#創建figure對象,默認我們可以不用傳入任何參數
fig = plt.figure()
#創建axes對象
ax = fig.add_subplot(1, 1, 1)
#其中的label關鍵詞參數就是圖例
ax.plot(range(5), label='one')
ax.plot(range(5, 0, -1), label='two')
ax.set_title(u'這裏是標題', fontproperties=font)
ax.set_xlabel(u'這裏是x軸的名稱', fontproperties=font)
ax.set_ylabel(u'這裏是y軸的名稱', fontproperties=font)
#顯示出圖例,並標明位置
ax.legend(loc='best')

就這樣,其實非常的簡單。

四、添加圖形註解

在製作圖形的時候會遇到這樣的情況,我們需要對圖形上的某一個位置添加解釋,廢話不說先上圖:
這裏寫圖片描述
圖表中的箭頭以及文字就是對某一個座標的註解,這非常的有用。實現起來是非常簡單的:

ax1.annotate(s=u'我就是要指向這裏',
             xy=(x,y), 
             xytext=(x, y),
             arrowprops={'arrowstyle':'fancy'}, 
             fontproperties=font,
             fontsize=10)

我們只需要axes對象的annotate()方法就可以實現。參數說明:
s:我們需要註解的文字,在python中前面一定要加一個U,字符串表示
xy:需要我們箭頭指向的點的(x, y)座標,一個二元組對
xytext:註解文字所在的(x, y)的座標,一個二元組對
arrowprops:字典,裏面可以選擇我們喜歡的連接兩個座標點的圖形

到此爲止,基本功能我們都已經實現,圖標的標題,x軸(y軸)的刻度和名稱,圖例,文字註解。這已經可以滿足我們大部分的需求。
更多的內容大家可以參考matplotlib的官方資源:http://matplotlib.org/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章