1. 程式人生 > >4、matplotlib 座標軸

4、matplotlib 座標軸

主目錄

座標軸設定(範圍、標籤、位置)

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()

這裡寫圖片描述