Matplotlib自定義坐標(biāo)刻度的使用示例
雖然matplotlib
默認(rèn)的坐標(biāo)軸定位器與格式生成器可以滿足大部分需求,但是并非對(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)的刻度格式可以滿足大部分的需求。雖然默認(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-12python實(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-05caffe的python接口caffemodel參數(shù)及特征抽取示例
這篇文章主要介紹了caffe的python接口caffemodel參數(shù)及特征抽取示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解
這篇文章主要介紹了python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10Python sklearn庫(kù)實(shí)現(xiàn)PCA教程(以鳶尾花分類為例)
今天小編就為大家分享一篇Python sklearn庫(kù)實(shí)現(xiàn)PCA教程(以鳶尾花分類為例),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Python對(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-05Python使用eval函數(shù)解析和執(zhí)行字符串
在Python中,eval函數(shù)是一個(gè)非常強(qiáng)大的函數(shù),它可以將字符串作為代碼進(jìn)行解析和執(zhí)行,本文主要介紹了如何使用eval函數(shù)解析和執(zhí)行字符串,需要的可以了解下2024-01-01