fbpx

嗨~各位好,我是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 的基本語法,真正要使用時所需要處理的資料量一定很龐大,但萬丈高樓平地起,最基礎的東西還是要先打好。

在這裡和大家分享一個資訊,在11/26(四)會有一場主題小聚會分享爬蟲實作,如果想要讓程式每天幫你節省時間的話,歡迎點擊圖片報名!

另外,如果喜歡我寫的文章可以加入程式小白的 JS Python 學習群的社團,和我還有其他學習夥伴一起討論、交流、互動哦~我們下次見囉~

Leave a Reply