階梯折線圖 Step Chart
這篇教學會使用 matplotlib pyplot 模組裡的 step() 方法,將資料繪製成階梯折線圖 ( Step Chart ),並進一步介紹 step() 的相關用法。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
import matplotlib
要進行本篇的範例,必須先載入 matplotlib 函式庫的 pyplot 模組,範例將其獨立命名為 plt。
import matplotlib.pyplot as plt
pyplot.step() 參數說明
pyplot.step() 常用的參數如下表所示 ( 完整參數參考:matplotlib.pyplot.step ):
參數 | 說明 |
---|---|
x | 必填,數據位置 ( x 軸 )。 |
y | 必填,長條圖高度 ( y 軸 )。 |
where | 線段水平對齊位置,預設 pre ( 左 ),可設定 mid ( 中 ) 和 post ( 右 )。 |
color | 線條或資料點的顏色 ( 除了十六進位色碼,也可填入顏色代碼,例如 r、g、b、m、c、y...等,參考:color 列表 )。 |
linestyle | 線條樣式,預設實線 solid ( 線條樣式代碼為 -、--、-.、: )。 |
linewidth | 線條粗細,預設 2。 |
繪製第一張階梯折線圖
下方的程式碼,執行後會根據數據資料畫出階梯折線圖。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = list(range(10,100,20)) # 產生 10~100 間隔 20 的數字
plt.step(x,y)
plt.show()
額外設定 step() 的參數,就能讓階梯折線圖有更多變化,下方的例子設定顏色 color、線條寬度 linewidth 和線條樣式 linestyle。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = list(range(10,100,20))
plt.step(x,y,color='r',linewidth=5,linestyle='--')
plt.show()
多組數據的階梯折線圖
如果有多組數據需要同時呈現,可以獨立繪製每組階梯折線圖,完成後再使用 show() 的方式顯示散布圖,下方的例子會呈現三組階梯折線圖,同時設定不同的 where 參數 ( 可觀察出起始點與終點位置的不同 )。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y1 = list(range(10,110,20))
y2 = list(range(40,140,20))
y3 = list(range(70,170,20))
plt.step(x,y1,color='r')
plt.step(x,y2,color='g',where='mid')
plt.step(x,y3,color='b',where='post')
plt.show()
搭配 NumPy 階梯折線圖
由於 matplotlib 能完美的和 NumPy 整合,所以能透過 NumPy 強大的處理或產生數據能力,快速產生許多繪圖用的數據,下方的例子,使用 NumPy 產生 100~1000 隨機十個數字,使用 matplotlib 繪製出結果。
from numpy import random
import matplotlib.pyplot as plt
x = range(0,10) # 產生 0~9 共十個數字
y = random.randint(100,1000,10) # 產生 100~1000 隨機十個數字
plt.step(x,y) # 繪製階梯折線圖
plt.plot(x,y,'o--', color='grey',alpha=0.3) # 繪製折線圖
plt.show()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~