Matplotlib是一個主要用於繪製二維圖形的Python庫。數據可視化是數據分析的重要環節,藉助圖形能夠幫助更加直觀地表達出數據背後的」東西」。Matplolib最初主要模仿Matlab的畫圖命令,但是它是獨立於Matlab的,可以自由、免費使用的繪圖包。Matplotlib依賴於之前介紹的Numpy庫來提供出色的繪圖能力。
Matplotlib的官網地址
http:
MatplotlibAPI的詳細介紹請參考官網地址:
http:
Windows,Linux,Mac 三種作業系統都可以安裝Matplotlib庫。以Windows為例,進入CMD窗口中,使用pip命令安裝Matplotlib,系統會自動進行安裝。
pip install matplotlib
如果安裝失敗,可以使用國內的鏡像來安裝Matplotlib庫,如下所示。
pip install matplotlib -ihttps://pypi.tuna.tsinghua.edu.cn/simple/
正常情況下,系統還會下載其它的關聯安裝包並完成安裝,最後系統會提示已經安裝成功Matplotlib了,如圖所示。
我們使用Matplotligb畫一個簡單直線圖。本案例的文件名為PythonFullStack/Chapter07/ pl_linechart.py,內容如下:
#導入 pyplot模塊,並起一個別名 plt
import matplotlib.pyplot as plt
# 設置X軸的坐標為 [1,2,3],設置Y軸的坐標為 [3,2,1]
plt.plot( [1,2,3],[3,2,1] )
#畫圖
plt.show()
運行腳本如果可以顯示下圖形,說明Matplotlib的環境安裝成功了。
散點圖
繪製身高-體重的散點圖
import matplotlib.pyplot as plt
height=[161,170,182,175,173,165]
weight=[50,58,80,70,69,55]
plt.scatter(height,weight , alpha=0.7)
plt.xlabel( 'height')
plt.ylabel( 'weight ')
plt.title('scatter demo')
plt.show()
運行腳本輸出以下圖形。
散點圖主要演示2個變量的相關性:正相關,負相關,不相關。我們先看下無相關性的散點圖。
例子2:無相關性的散點圖。
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(10)
N= 100
x = np.random.randn(N)
y1=np.random.randn(N)
plt.scatter(x,y1 )
plt.show()
運行腳本輸出以下圖形
折線圖
折線圖,也叫條形圖,是用直線將各數據連接起來組成的圖形。常用來觀察數據隨時間變化的趨勢。例如股票價格,溫度變化等等,如圖7-27所示。
上圖的折線圖是某公司近五年的汽車銷售數據,折線圖的橫坐標是時間,縱坐標是銷售量,表示隨著時間的推移,銷售量的變化趨勢。
示例1: 顯示 y = 2 x +1 的圖形。
Matplotlib中最基礎的模塊式pyplot,下面從最簡單的線圖開始講解,比如有一組數據,還有一個擬合模型,通過編寫代碼來實現數據與模型結果的可視化。
假設一個線性函數具有形式y = ax + b,自變量x,因變量是y,Y軸截距為b,斜率為a。
下面用簡單的數據來描述線程方程y = 2x +1,代碼如下。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace( -1 , 1, 50 )
y = 2 * x + 1
plt.xlabel('X')
plt.ylabel('Y ')
plt.plot(x,y)
plt.show()
運行腳本會輸出以下圖形。
在上圖中,我們使用線程方程y = 2x +1畫出的是直線圖,如果想畫出曲線圖,只需要更改線程方程為y= x **2 ,完整代碼如下。
import matplotlib.pyplot as plt
import numpy as np
plt.xlabel('X')
plt.ylabel('Y ')
x = np.linspace( -1 , 1, 50 )
y = x**2
plt.plot (x,y)
plt.show()
運行腳本輸出以下圖形。
柱狀圖
柱狀圖,也叫條形圖,以長方形的長度為變量的統計視圖。用來比較多個類別的數據大小。通常用來比較兩個或以上的變量。如果只有一個變量,通常用於用於較小的數據集分析。例如:不同季度的銷量,不同國家的人口等。
例子1:垂直柱狀圖。
本案例文件名為PythonFullStack/Chapter07/mpl_bar01,顯示垂直的柱狀圖,其完整代碼如下。
import numpy as np
import matplotlib.pyplot as plt
index = np.arange(5)
y=[20,10,30,25,15]
p1 = plt.bar(left=index, height=y , width=0.5 , color='r' )
plt.title("bar demo")
plt.show()
運行腳本會輸出以下圖形。
圖733垂直柱狀圖
例子2:水平柱狀圖。
本案例文件名為PythonFullStack/Chapter07/mpl_bar02,顯示水平的柱狀圖,其完整代碼如下。
import numpy as np
import matplotlib.pyplot as plt
N = 5
y=[20,10,30,25,15]
index = np.arange(N)
p2 = plt.bar(left=0,bottom=index, width=y,height=0.8,orientation ='horizontal' )
plt.title("bar demo")
plt.show()
運行腳本會輸出以下圖形。
這個案例的核心代碼如下,首先使用Numpy生成一個矩陣index,然後需要設置Matplotlib的bar()函數的bottom屬性為index,表示柱狀圖的底部變成了index,水平垂直柱狀圖的橫坐標變成了縱坐標,然後設置 plt.bar()函數的 left屬性0,還要設置orientation屬性為』horizontal』。orientation表示條形圖的方向,設定的值horizontal』表示水平顯示。看起來比較繞,但正是這種靈活性,才可以定製出複雜圖形。
plt.bar(left=0,bottom=index, width=y,height=0.8,orientation ='horizontal' )
留言回覆你在機器學習方面做過哪些有趣的應用,我們會在留言中隨機抽取一位讀者免費送出北京大學出版社出版的《Python 3.x全棧開發從入門到精通》圖書一本。通過「拆解式」講解Python全棧開發全過程,本書集理論、技術、案例、項目開發經驗為一體,通過海量示例展示開發過程中的重點、疑點、難點,是一本寶典式大全教程。
▼ 點擊成為社區註冊會員 「在看」一下,一起PY!