Matplotlib自定義坐標(biāo)刻度的使用示例
雖然matplotlib默認(rèn)的坐標(biāo)軸定位器與格式生成器可以滿(mǎn)足大部分需求,但是并非對(duì)每一幅圖都合適。
主次要刻度
學(xué)習(xí)前最好有對(duì)matplotlib圖形的對(duì)象層級(jí)較為了解,例如查看前面的文章。
matplotlib的figure對(duì)象是一個(gè)盛放圖形元素的包圍盒。可以將每個(gè)matplotlib對(duì)象都看成是子對(duì)象的容器,每個(gè)figure都包含axes對(duì)象,每個(gè)axes對(duì)象又包含其他表示圖形內(nèi)容的對(duì)象,比如xaxis/yaxis,每個(gè)屬性包含構(gòu)成坐標(biāo)軸的線條、刻度和標(biāo)簽的全部屬性。
每一個(gè)坐標(biāo)軸都有主次要刻度,主要刻度要比次要刻度更大更顯著,而次要刻度往往更小。
import matplotlib.pyplot as plt import numpy as np ax = plt.axes(xscale='log', yscale='log') plt.show()

可以看到主要刻度都顯示為一個(gè)較大的刻度線和標(biāo)簽,而次要刻度都顯示為一個(gè)較小的可讀性,不顯示標(biāo)簽。
隱藏刻度與標(biāo)簽
最常用的刻度/標(biāo)簽格式化操作可能就是隱藏刻度與標(biāo)簽了,可以通過(guò)plt.NullLocator()和plt.NullFormatter()實(shí)現(xiàn)。
示例如下:
ax = plt.axes() ax.plot(np.random.rand(50)) ax.yaxis.set_major_locator(plt.NullLocator()) ax.xaxis.set_major_formatter(plt.NullFormatter()) plt.show()

這里x軸的標(biāo)簽隱藏了但是保留了刻度線,y軸的刻度和標(biāo)簽都隱藏了。有的圖片中都不需要刻度線,比如下面這張包含人臉的圖形:
fig, ax = plt.subplots(5, 5, figsize=(5, 5))
fig.subplots_adjust(hspace=0, wspace=0)
# 從scikit-learn獲取一些人臉照片數(shù)據(jù),(這個(gè)scikit-learn庫(kù)在之前手寫(xiě)數(shù)字文章有講)
from sklearn.datasets import fetch_olivetti_faces
faces = fetch_olivetti_faces().images
for i in range(5):
for j in range(5):
ax[i, j].xaxis.set_major_locator(plt.NullLocator())
ax[i, j].yaxis.set_major_locator(plt.NullLocator())
ax[i, j].imshow(faces[10 * i + j], cmap="bone")
plt.show()

花哨的刻度格式
matplotlib默認(rèn)的刻度格式可以滿(mǎn)足大部分的需求。雖然默認(rèn)配置已經(jīng)很不錯(cuò)了,但是有時(shí)候可能需要更多的功能,比如正弦曲線和余弦曲線。
默認(rèn)情況下刻度為整數(shù),如果將刻度與網(wǎng)格線畫(huà)在π的倍數(shù)上圖形會(huì)更加自然,可以通過(guò)設(shè)置一個(gè)multipleLocator來(lái)實(shí)現(xiàn)將刻度放在你提供的數(shù)值倍數(shù)上:
fig, ax = plt.subplots()
x = np.linspace(0, 3 * np.pi, 1000)
ax.plot(x, np.sin(x), lw=3, label='Sine')
ax.plot(x, np.cos(x), lw=3, label='Cosine')
# 設(shè)置網(wǎng)格、圖例和坐標(biāo)軸上下限
ax.grid(True)
ax.legend(frameon=False)
ax.axis('equal')
ax.set_xlim(0, 3 * np.pi)
ax.xaxis.set_major_locator(plt.MultipleLocator(np.pi / 2))
ax.xaxis.set_minor_locator(plt.MultipleLocator(np.pi / 4))
plt.show()

matplotlib還支持用數(shù)學(xué)符號(hào)來(lái)做刻度,在數(shù)學(xué)表達(dá)式兩側(cè)加上美元符號(hào)$,這樣就可以方便地顯示數(shù)學(xué)符號(hào)和數(shù)學(xué)公式。
可以用plt.FuncFormatter來(lái)實(shí)現(xiàn),用一個(gè)自定義函數(shù)設(shè)置不同刻度標(biāo)簽的顯示:
def format_func(value, tick_number):
# 找到π/2的倍數(shù)刻度
N = int(np.round(2 * value / np.pi))
if N == 0:
return "0"
elif N == 1:
return r"$\pi/2$"
elif N == 2:
return r"$\pi$"
elif N % 2 > 0:
return r"${0}\pi/2$".format(N)
else:
return r"${0}\pi$".format(N // 2)
ax.xaxis.set_major_formatter(plt.FuncFormatter(format_func))

格式生成器與定位器
前面已經(jīng)介紹了一些格式生成器和定位器,這里再用表格簡(jiǎn)單總結(jié)一些內(nèi)置的格式生成器和定位器:


到此這篇關(guān)于Matplotlib自定義坐標(biāo)刻度的使用示例的文章就介紹到這了,更多相關(guān)Matplotlib自定義坐標(biāo)刻度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python利用matplotlib.pyplot繪圖時(shí)如何設(shè)置坐標(biāo)軸刻度
- Python設(shè)置matplotlib.plot的坐標(biāo)軸刻度間隔以及刻度范圍
- Python繪圖Matplotlib之坐標(biāo)軸及刻度總結(jié)
- Matplotlib自定義坐標(biāo)軸刻度的實(shí)現(xiàn)示例
- matplotlib如何設(shè)置坐標(biāo)軸刻度的個(gè)數(shù)及標(biāo)簽的方法總結(jié)
- 如何利用Python和matplotlib更改縱橫坐標(biāo)刻度顏色
- matplotlib圖例、標(biāo)簽、坐標(biāo)軸刻度的字體設(shè)置方式
- Python3使用matplotlib繪圖時(shí),坐標(biāo)軸刻度不從X軸、y軸兩端開(kāi)始
相關(guān)文章
python 利用已有Ner模型進(jìn)行數(shù)據(jù)清洗合并代碼
今天小編就為大家分享一篇python 利用已有Ner模型進(jìn)行數(shù)據(jù)清洗合并代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python實(shí)現(xiàn)在sqlite動(dòng)態(tài)創(chuàng)建表的方法
這篇文章主要介紹了python實(shí)現(xiàn)在sqlite動(dòng)態(tài)創(chuàng)建表的方法,涉及Python操作SQLite數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)表的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-05-05
caffe的python接口caffemodel參數(shù)及特征抽取示例
這篇文章主要介紹了caffe的python接口caffemodel參數(shù)及特征抽取示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解
這篇文章主要介紹了python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10
Python sklearn庫(kù)實(shí)現(xiàn)PCA教程(以鳶尾花分類(lèi)為例)
今天小編就為大家分享一篇Python sklearn庫(kù)實(shí)現(xiàn)PCA教程(以鳶尾花分類(lèi)為例),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python對(duì)文件和目錄進(jìn)行操作的方法(file對(duì)象/os/os.path/shutil 模塊)
下面小編就為大家?guī)?lái)一篇Python對(duì)文件和目錄進(jìn)行操作的方法(file對(duì)象/os/os.path/shutil 模塊)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
Python使用eval函數(shù)解析和執(zhí)行字符串
在Python中,eval函數(shù)是一個(gè)非常強(qiáng)大的函數(shù),它可以將字符串作為代碼進(jìn)行解析和執(zhí)行,本文主要介紹了如何使用eval函數(shù)解析和執(zhí)行字符串,需要的可以了解下2024-01-01

