設定座標軸位置
使用 matplotlib 繪製圖表時,除了固定四個邊的矩形座標軸,也可以透過 spines() 方法設定座標軸位置,做出十字型座標的圖表,這篇教學將會介紹如何設定圖表座標軸的位置。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
使用取得座標軸
參考「建立多個子圖表 ( subplot、subplots )」一文,透過 subplot、subplots 方法,都可以建立單一子圖表或多個子圖表,下方列出針對不同的建立方法,對應不同取得座標軸的方式:
subplot() 建立的子圖表,使用 gca() 獲取目前圖表上的座標軸。
import matplotlib.pyplot as plt x = [1,2,3,4,5] fig = plt.figure() plt.subplot(221) plt.plot(x) ax = plt.gca() print(ax) # AxesSubplot(0.125,0.536818;0.352273x0.343182)
subplots() 建立的子圖表,可直接呼叫設定座標軸。
import matplotlib.pyplot as plt x = [1,2,3,4,5] fig, ax = plt.subplots(2,2) print(ax[0][0]) plt.show() # AxesSubplot(0.672059,0.125;0.227941x0.222059)
使用 spines() 設定座標軸樣式
取得座標軸之後,就能使用 spines 設定座標軸,spines 是一個字典型態,spines['top'] 表示上方座標軸,spines['bottom'] 表示下方座標軸,spines['left'] 表示左側座標軸,spines['right'] 表示右側座標軸,常用的設定方法如下:
|方法|參數|說明| |--|--| |set_color|color|設定座標軸顏色。| |set_position|position|設定座標軸位置,使用 ('axes', float) 或 ('data', float) 方式呈現,float 數值表示座標軸的位置,如果設定 'axes' 則範圍是 0 ( 左 ) ~ 1 ( 右 )。| |set_visible|bool|是否顯示座標軸,預設 True 顯示座標軸,設定 False 隱藏座標軸。|
下方的例子,會將上方與右側的座標軸隱藏,接著將左側與下方的座標軸置中。
import matplotlib.pyplot as plt
x = [0,1,2,3,4,5]
fig, ax = plt.subplots()
ax.plot(x)
ax.set_xlim(-6,6)
ax.set_ylim(-6,6)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['bottom'].set_position(('axes',0.5))
ax.spines['left'].set_position(('axes',0.5))
plt.show()
下方的程式換成 subplot() 的做法,執行後結果也會相同。
import matplotlib.pyplot as plt
x = [0,1,2,3,4,5]
fig = plt.figure()
plt.subplot()
plt.plot(x)
plt.xlim(-6,6)
plt.ylim(-6,6)
ax = plt.gca()
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['bottom'].set_position(('axes',0.5))
ax.spines['left'].set_position(('axes',0.5))
plt.show()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~