嗨~各位好,我是Teresa,這集想要和大家介紹Python中實用的套件-Matplotlib,原因是如果心中有個想法想要去實踐,雖然有資料,但需要說服夥伴的話,將你手中擁有的數據轉為圖表是很重要的,這樣一來,你說的話有說服力,觀看者也能簡單易懂。那我們就開始吧!
什麼是Matplotlib?
Matplotllib是Python的視覺化套件,可將資料視覺化,也可以稱做繪圖庫,可以和NumPy一起使用。它是由約翰.亨利所創造的,不但開源,且各個平台間也具相容性。Matplotllib的代碼庫在此 github。
如何使用Matplotlib?
要開始使用Matplotlib,就如同其他模組和套件一般,要先安裝並匯入。
pip install matplotlib #安裝 Matplotlib import matplotlib import matplotlib.pyplot as plt #匯入Pyplot 套件並命名為plt
安裝成功後就可以畫圖囉!
繪製 x 和 y點
import matplotlib.pyplot as plt import numpy as np xpoints = np.array([0, 3]) ypoints = np.array([0, 150]) plt.plot(xpoints, ypoints) plt.show()
語法說明:
plot( )可以用於繪製圖上的點,它會採用參數中被我們指定的點
(x, y)參數等同於點的陣列,第一個參數x是包含x 軸上點的陣列;第二個參數y 是包含y 軸上點的陣列
如果要繪製從(0, 0)到(3, 150)的線,就必須將兩個陣列[0, 3 ]到[0, 150]傳遞給函數
標記座標、不連線繪圖
xpoints = np.array([1, 5]) ypoints = np.array([3, 7]) plt.plot(xpoints, ypoints, 'o') plt.show()
語法說明:
在圖中繪製兩個點,分別是(1,3)、(5,7)
將點用’o’來做標記
繪製多個點
可以繪製無限多點,只需要確定x軸與y軸的個數是成對的
xpoints = np.array([1, 2, 6, 8]) ypoints = np.array([3, 8, 1, 10]) plt.plot(xpoints, ypoints) plt.show()
語法說明:繪製四個點(1,3)、(2,8)、(6,1)、(8, 10)並連線
如果不指定x軸中的點,他們會得到預設值從0開始,單位為1的成長(成長幾個單位取決於y 點的個數)
ypoints = np.array([3, 8, 1, 10, 5, 7]) plt.plot(ypoints) plt.show()
標記
可以使用關鍵字參數 maker 的指定標記來強調每個點,可以用上面提過的 ‘o’、’ * ‘
ypoints = np.array([3, 8, 1, 10]) plt.plot(ypoints, marker = 'o') plt.show()
針對點的標記有很多種方式,好奇的人可以自己稍作嘗試。
標記方式 | 描述 | 標記方式 | 描述 |
‘o’ | Circle | ‘H’ | Hexagon |
‘*’ | Star | ‘h’ | Hexagon |
‘.’ | Point | ‘v’ | Triangle Down |
‘,’ | Pixel | ‘^’ | Triangle Up |
‘x’ | X | ‘<‘ | Triangle Left |
‘X’ | X (filled) | ‘>’ | Triangle Right |
‘+’ | Plus | ‘1’ | Tri Down |
‘P’ | Plus (filled) | ‘2’ | Tri Up |
‘s’ | Square | ‘3’ | Tri Left |
‘D’ | Diamond | ‘4’ | Tri Right |
‘d’ | Diamond (thin) | ‘|’ | Vline |
‘p’ | Pentagon | ‘_’ | Hline |
除了點的標記外,線的格式與顏色也可以做修改,稱為字串表示法 fmt,它的格式是 標記 | 線 | 顏色
import matplotlib.pyplot as plt import numpy as np ypoints = np.array([3, 8, 1, 10]) plt.plot(ypoints, 'o:r') plt.show()
線的表示方式有以下幾種:
線的語法 | 線的型態 |
‘-‘ | Solid line |
‘:’ | Dotted line |
‘–‘ | Dashed line |
‘-.’ | Dashed/dotted line |
顏色的表示方式有以下幾種:
顏色的語法 | 顏色 |
‘r’ | 紅色 |
‘g’ | 綠色 |
‘b’ | 藍色 |
‘c’ | 青色 |
‘m’ | 酒紅色 |
‘y’ | 黃色 |
‘k’ | 黑色 |
‘w’ | 白色 |
色碼#______ | 你想用的任何顏色 |
可以利用函數來改變標記,如:
- 點的大小:ms (markersize)
- 點邊線的顏色:mec(markeredgecolor)
- 點內的顏色:mfc(markerfacecolor)
- 線的寬度:lw (linewidth)
import matplotlib.pyplot as plt import numpy as np ypoints = np.array([3, 8, 1, 10]) plt.plot(ypoints, marker = 'o', ms = 10, mec = 'k', mfc = 'g') plt.show()
同一圖表中呈現多條線
如果想要在同一張圖畫上多條線的話,只需要新增不同的陣列即可繪製不同條線 plt.plot()
import matplotlib.pyplot as plt import numpy as np x1 = np.array([0, 1, 2, 3]) y1 = np.array([3, 8, 1, 10]) x2 = np.array([0, 1, 2, 3]) y2 = np.array([6, 2, 7, 11]) plt.plot(x1, y1, x2, y2) plt.show()
繪製多個圖表
如果想要繪製多個圖表,可以使用subplots(行,列,第幾個圖)
import matplotlib.pyplot as plt import numpy as np #plot 1: x = np.array([0, 1, 2, 3]) y = np.array([3, 8, 1, 10]) plt.subplot(1, 2, 1) #一行,兩列,第一個圖表 plt.plot(x,y) #plot 2: x = np.array([0, 1, 2, 3]) y = np.array([10, 20, 30, 40]) plt.subplot(1, 2, 2) #一行,兩列,第二個圖表 plt.plot(x,y) plt.show()
import matplotlib.pyplot as plt import numpy as np #plot 1: x = np.array([0, 1, 2, 3]) y = np.array([3, 8, 1, 10]) plt.subplot(2, 1, 1) #兩行,一列,第一個圖表 plt.plot(x,y) #plot 2: x = np.array([0, 1, 2, 3]) y = np.array([10, 20, 30, 40]) plt.subplot(2, 1, 2) #兩行,一列,第二個圖表 plt.plot(x,y) plt.show()
將圖表加入標題
使用title( )可以幫圖表加上標題、suptitle()可以幫整個圖表加上主標題
繪製柱狀圖
使用bar(類別,值 )即可繪製垂直的柱狀圖
import matplotlib.pyplot as plt import numpy as np x = np.array(["A", "B", "C", "D"]) y = np.array([3, 8, 1, 10]) plt.bar(x,y) plt.show()
使用barh( ),即可繪製水平的柱狀圖,color可以選擇柱狀圖的顏色,width可以調整寬度,預設的寬度是0.8
import matplotlib.pyplot as plt import numpy as np x = np.array(["A", "B", "C", "D"]) y = np.array([3, 8, 1, 10]) plt.bar(x, y, width = 0.1) plt.show()
繪製直方圖
直方圖可以表示次數分配,hist( )
import matplotlib.pyplot as plt import numpy as np x = np.random.normal(170, 10, 250) #隨機生成一個250個介於170左右的值,標準差為10 plt.hist(x) plt.show()
繪製圓餅圖
使用pie( )可繪製圓餅圖,預設會從圓餅圖中間的右手邊開始,逆時針分配比例。
import matplotlib.pyplot as plt import numpy as np y = np.array([15, 35, 15, 35]) plt.pie(y) plt.show()
可使用lables來添加標籤,或是想要改變開始的角度,可以使用startangle,角度如下圖所示:
import matplotlib.pyplot as plt import numpy as np y = np.array([15, 35, 15, 35]) mylabels = ["ants", "birds", "cats", "dogs"] plt.pie(y, labels = mylabels, startangle = 90) plt.show()
如果你想要其中一個比例比較明顯,可以使用explode[預設為0,調整值可以改變每個比例距離圖形的圓心有多遠]
import matplotlib.pyplot as plt import numpy as np y = np.array([15, 35, 15, 35]) mylabels = ["ants", "birds", "cats", "dogs"] myexplode = [0.2, 0, 0, 0] plt.pie(y, labels = mylabels, explode = myexplode) plt.show()
將圓餅圖加入陰影,可以用shadow = True,也可以改變圓餅圖的顏色 colors
import matplotlib.pyplot as plt import numpy as np y = np.array([15, 35, 15, 35]) mylabels = ["ants", "birds", "cats", "dogs"] myexplode = [0.2, 0, 0, 0] plt.pie(y, labels = mylabels, explode = myexplode, shadow = True) plt.show()
使用legend( )可以加入圖例,使用title可以添加圖例的標題
import matplotlib.pyplot as plt import numpy as np y = np.array([15, 35, 15, 35]) mylabels = ["ants", "birds", "cats", "dogs"] plt.pie(y, labels = mylabels) plt.legend(title = "Four animals:") plt.show()
好的,這集主要就是簡單紀錄 Matplotlib 的基本語法,真正要使用時所需要處理的資料量一定很龐大,但萬丈高樓平地起,最基礎的東西還是要先打好。
Python初學總整理 全系列:
Python初學總整理 第3講:Python資料型態和運算子
Python初學總整理 第4講:Python條件、迴圈與函數
Python初學總整理 第7講:爬蟲實例解析 – 以爬取臉書社團為案例,使用 Selenium 來進行網頁模擬爬蟲
Python初學總整理 第8講:Matplotlib套件 (本篇)
文章看完還是不知道該從哪裡下手?
就從線上課程開始吧!不讓你獨自摸索好幾個月,用8小時帶你走完基礎與精華,培養你基礎的Python概念,讓自學下一步不是煩惱!
全新Python 課程上架,8小時基礎實戰!,限時優惠只要NT 600 (HDK 120 起)!
不讓妳浪費一整天,只要你8小時,就能讓你學會基礎!
如果你的入門還在單打獨鬥,歡迎來到快樂學程式找到志同道合的夥伴,你的自學之路不孤單。