4、matplotlib 座標軸
阿新 • • 發佈:2019-01-03
座標軸設定(範圍、標籤、位置)
1、建立資料,此處為三角函式為例
import matplotlib.pyplot as mp
import numpy as np
x = np.linspace(-np.pi, np.pi, 999)
cos_y = np.cos(x)
sin_y = np.sin(x)
2、設定座標軸範圍【xlim】
mp.xlim(
x.min() * 1.1,
x.max() * 1.1
)
mp.ylim(
min(cos_y.min(), sin_y.min()) * 1.1,
max(cos_y.max (), sin_y.max()) * 1.1
)
3、設定座標軸刻度標籤【xticks】
mp.xticks(
[-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi],
[r'$-\pi$', r'$-\frac{\pi}{2}$', r'$\frac{\pi}{2}$', r'$\pi$']
)
mp.yticks([-1, 0, 1])
4、獲取座標軸物件【gca】(此處以設定十字座標軸為例)
# 獲取當前座標軸物件
ax = mp.gca()
# 將垂直座標刻度置於左邊框
ax.yaxis.set_ticks_position('left' )
# 將水平座標刻度置於底邊框
ax.xaxis.set_ticks_position('bottom')
# 將左邊框置於資料座標原點
ax.spines['left'].set_position(('data', 0))
# 將底邊框置於資料座標原點
ax.spines['bottom'].set_position(('data', 0))
# 將右邊框和頂邊框設定成無色
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
5、繪圖並顯示
# 繪圖
mp.plot(x, cos_y, linestyle='-' , linewidth=1,color='dodgerblue')
mp.plot(x, sin_y, linestyle='-', linewidth=1,color='orangered')
# 顯示
mp.show()
座標軸刻度
Axes.xaxis.set_major_locator(刻度定位器物件)
- ax = mp.gca()
- ax.yaxis.set_major_locator(刻度定位器物件)
- ax.yaxis.set_minor_locator(刻度定位器物件)
import numpy as np
import matplotlib.pyplot as mp
# 建立視窗
mp.figure()
# 存放【刻度定位器物件】的列表
locators = [
'mp.NullLocator()',
'mp.MaxNLocator(nbins=3, steps=[4.9, 5.1])',
'mp.FixedLocator(locs=[0, 2, 8, 10])',
'mp.AutoLocator()',
'mp.IndexLocator(offset=0.5, base=1.5)',
'mp.MultipleLocator()',
'mp.LinearLocator(numticks=21)',
'mp.LogLocator(base=2, subs=[1.0])'
]
length = len(locators)
# 子圖繪製
for i in range(length):
mp.subplot(length, 1, i + 1)
mp.xlim(0, 10)
mp.ylim(-1, 1)
mp.yticks(())
# gca獲取當前的axes繪圖區域
ax = mp.gca()
ax.spines['left'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position(('data', 0))
# 標籤刻度
ax.xaxis.set_major_locator(eval(locators[i])) # 傳參:刻度定位器
ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1))
# 繪圖
mp.plot(np.arange(11), np.zeros(11), color='none')
mp.text(5, 0.3, locators[i][3:], ha='center', size=12)
mp.tight_layout()
mp.show()