Matplotlib自定義坐標刻度的使用示例
雖然matplotlib
默認的坐標軸定位器與格式生成器可以滿足大部分需求,但是并非對每一幅圖都合適。
主次要刻度
學習前最好有對matplotlib
圖形的對象層級較為了解,例如查看前面的文章。
matplotlib
的figure
對象是一個盛放圖形元素的包圍盒??梢詫⒚總€matplotlib
對象都看成是子對象的容器,每個figure
都包含axes
對象,每個axes
對象又包含其他表示圖形內容的對象,比如xaxis/yaxis
,每個屬性包含構成坐標軸的線條、刻度和標簽的全部屬性。
每一個坐標軸都有主次要刻度,主要刻度要比次要刻度更大更顯著,而次要刻度往往更小。
import matplotlib.pyplot as plt import numpy as np ax = plt.axes(xscale='log', yscale='log') plt.show()
可以看到主要刻度都顯示為一個較大的刻度線和標簽,而次要刻度都顯示為一個較小的可讀性,不顯示標簽。
隱藏刻度與標簽
最常用的刻度/標簽格式化操作可能就是隱藏刻度與標簽了,可以通過plt.NullLocator()
和plt.NullFormatter()
實現(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
軸的標簽隱藏了但是保留了刻度線,y
軸的刻度和標簽都隱藏了。有的圖片中都不需要刻度線,比如下面這張包含人臉的圖形:
fig, ax = plt.subplots(5, 5, figsize=(5, 5)) fig.subplots_adjust(hspace=0, wspace=0) # 從scikit-learn獲取一些人臉照片數(shù)據(jù),(這個scikit-learn庫在之前手寫數(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
默認的刻度格式可以滿足大部分的需求。雖然默認配置已經很不錯了,但是有時候可能需要更多的功能,比如正弦曲線和余弦曲線。
默認情況下刻度為整數(shù),如果將刻度與網(wǎng)格線畫在π的倍數(shù)上圖形會更加自然,可以通過設置一個multipleLocator
來實現(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') # 設置網(wǎng)格、圖例和坐標軸上下限 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ù)學符號來做刻度,在數(shù)學表達式兩側加上美元符號$
,這樣就可以方便地顯示數(shù)學符號和數(shù)學公式。
可以用plt.FuncFormatter
來實現(xiàn),用一個自定義函數(shù)設置不同刻度標簽的顯示:
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))
格式生成器與定位器
前面已經介紹了一些格式生成器和定位器,這里再用表格簡單總結一些內置的格式生成器和定位器:
到此這篇關于Matplotlib自定義坐標刻度的使用示例的文章就介紹到這了,更多相關Matplotlib自定義坐標刻度內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python 利用已有Ner模型進行數(shù)據(jù)清洗合并代碼
今天小編就為大家分享一篇python 利用已有Ner模型進行數(shù)據(jù)清洗合并代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12python實現(xiàn)在sqlite動態(tài)創(chuàng)建表的方法
這篇文章主要介紹了python實現(xiàn)在sqlite動態(tài)創(chuàng)建表的方法,涉及Python操作SQLite數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)表的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-05-05caffe的python接口caffemodel參數(shù)及特征抽取示例
這篇文章主要介紹了caffe的python接口caffemodel參數(shù)及特征抽取示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06python編程之requests在網(wǎng)絡請求中添加cookies參數(shù)方法詳解
這篇文章主要介紹了python編程之requests在網(wǎng)絡請求中添加cookies參數(shù)方法詳解,具有一定參考價值,需要的朋友可以了解下。2017-10-10Python sklearn庫實現(xiàn)PCA教程(以鳶尾花分類為例)
今天小編就為大家分享一篇Python sklearn庫實現(xiàn)PCA教程(以鳶尾花分類為例),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python對文件和目錄進行操作的方法(file對象/os/os.path/shutil 模塊)
下面小編就為大家?guī)硪黄狿ython對文件和目錄進行操作的方法(file對象/os/os.path/shutil 模塊)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05Python使用eval函數(shù)解析和執(zhí)行字符串
在Python中,eval函數(shù)是一個非常強大的函數(shù),它可以將字符串作為代碼進行解析和執(zhí)行,本文主要介紹了如何使用eval函數(shù)解析和執(zhí)行字符串,需要的可以了解下2024-01-01