1. 程式人生 > 程式設計 >python使用Matplotlib改變座標軸的預設位置

python使用Matplotlib改變座標軸的預設位置

使用Matplotlib繪製的圖表的預設座標軸是在左下角的,這樣對於一些函式的顯示不是非常方便,要改變座標軸的預設顯示方式主要要使用gca()方法

plt.gca()表示 Get current axis,使用這個方法我們可以獲得整張圖表的座標物件,這樣我們就可以對座標進行處理了,像移動位置,設定顏色之類的,類似plt.gcf()這個是 Get current figure 即獲得當前圖表的影象,對影象進行處理。

我們可以定義一個變數接收這個值:

ax = plt.gca()

接下來還要了解一個方法 :spine() 這個單詞的意思是脊樑,我的理解就是包圍圖表的線條,例如:

其餘的兩條邊也是一樣的道理,那麼,如果我們要移動座標到中心點,那麼我們可以移動其中的兩條邊,並隱藏兩條邊即可:

ax.spines[‘right'].set_color(‘none')
ax.spines[‘top'].set_color(‘none')

ax.xaxis.set_ticks_position(‘bottom')
ax.yaxis.set_ticks_position(‘left')

這時候做座標軸只剩下兩條線,接下來就是指定x軸以及y軸的繫結:

ax.spines[‘bottom'].set_position((‘data',0))
ax.spines[‘left'].set_position((‘data',0))

這樣寫的結果是將x,y軸繫結到特定位置,至於這兩個的值,其實試幾次就好理解了,上面的這種情況是座標軸的交點是(0,0),如果改成:

ax.spines[‘bottom'].set_position((‘data',1))

這樣兩個座標軸的交點就是(1,0).

完整程式碼:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-5,5,100)
y1 = 0.5 * x
y2 = x * x

plt.figure()
plt.xlabel('X axis...')
plt.ylabel('Y axis...') #設定座標軸的文字標籤

ax = plt.gca() # get current axis 獲得座標軸物件

ax.spines['right'].set_color('none') 
ax.spines['top'].set_color('none') # 將右邊 上邊的兩條邊顏色設定為空 其實就相當於抹掉這兩條邊

ax.xaxis.set_ticks_position('bottom') 
ax.yaxis.set_ticks_position('left') # 指定下邊的邊作為 x 軸 指定左邊的邊為 y 軸

ax.spines['bottom'].set_position(('data',0)) #指定 data 設定的bottom(也就是指定的x軸)繫結到y軸的0這個點上
ax.spines['left'].set_position(('data',0))

plt.plot(x,y1,linestyle='--')
plt.plot(x,y2)

plt.show()

效果如下:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。