折線圖 Line Chart
這篇教學會使用 matplotlib pyplot 模組裡的 plot() 方法,將資料繪製成二維折線圖 ( Line Chart ),並進一步介紹 polt() 的相關用法。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
import matplotlib
要進行本篇的範例,必須先載入 matplotlib 函式庫的 pyplot 模組,範例將其獨立命名為 plt。
import matplotlib.pyplot as plt
pyplot.plot() 參數說明
pyplot.plot() 常用的參數如下表所示 ( 完整參數參考:matplotlib.pyplot.plot ):
參數 | 說明 |
---|---|
x | 必填,第一組數據 ( x 軸 )。 |
y | 第二組數據 ( y 軸 )。 |
color | 線條或資料點的顏色 ( 除了十六進位色碼,也可填入顏色代碼,例如 r、g、b、m、c、y...等,參考:color 列表 )。 |
marker | 資料點樣式,預設無資料點 ( 資料點樣式代碼為 .、,、o、v...等,參考:markers 列表 )。 |
linestyle | 線條樣式,預設實線 solid ( 線條樣式代碼為 -、--、-.、: )。 |
linewidth | 線條粗細,預設 2。 |
markersize | 資料點大小,預設 6。 |
繪製第一張折線圖
下方的程式碼,會畫出一條左下往右上的折線圖,由於數據只有一組 x,會自動將 y 的資料套用 x。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
# 畫出顏色紅色、圓形錨點、虛線、粗細 2、資料點大小 6 的線條
plt.plot(x,color='r', marker='o', lineStyle='--', linewidth=2, markersize=6)
plt.show()
上方的程式碼,也可以將顏色、資料點形狀和線條樣式,簡化成下方的長相,執行後也會得到同樣的結果。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
plt.plot(x,'ro--', linewidth=2, markersize=6) # 簡化後的程式碼
plt.show()
二維數據的折線圖
如果同時有 x 和 y 二維數據,只要將資料放入 x 和 y 的參數位置,就能套用到對應的座標軸 ( 注意數據長度要相同,不然會發生錯誤 )
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [1,2,4,8,16]
plt.plot(x, y, 'ro--', linewidth=2, markersize=6)
plt.show()
多組數據的折線圖
如果有多組數據需要同時呈現,plot 提供下列幾種方法,第一種方法只依序將資料填入參數,就能在同一張圖表上畫出折線圖。
import matplotlib.pyplot as plt
x = [[1,2,3,4,5],[1,2,3,4,5]]
y = [[1,2,4,8,16],[1,2,3,4,5]]
plt.plot(x[0], y[0], 'ro-', x[1], y[1], 'go--') # 依序填入資料
plt.show()
第二種方法是獨立繪製每條線段,繪製完成後再使用 show() 的方式顯示折線圖。
import matplotlib.pyplot as plt
x = [[1,2,3,4,5],[1,2,3,4,5]]
y = [[1,2,4,8,16],[1,2,3,4,5]]
plt.plot(x[0], y[0], 'ro-') # 先畫第一條紅色實線
plt.plot(x[1], y[1], 'go--', linewidth=5, markersize=15) # 再畫第二條綠色粗的虛線
plt.show()
搭配 NumPy 繪製折線圖
由於 matplotlib 能完美的和 NumPy 整合,所以能透過 NumPy 強大的處理或產生數據能力,快速產生許多繪圖用的數據,下方的例子,使用 NumPy 產生 0~10 間連續 100 個數字,以及每個數字對應的 sin 和 cos 數值,最後使用 matplotlib 繪製出結果。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100) # 產生 0~10 間連續 100 個數字
y1 = np.sin(x) # 每個數字對應的 sin 值
y2 = np.cos(x) # 每個數字對應的 cos 值
plt.plot(x,y1) # 畫出第一條線段
plt.plot(x,y2) # 畫出第二條線段
plt.show()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~