欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Matplotlib自定義坐標(biāo)刻度的使用示例

 更新時(shí)間:2023年11月26日 09:25:55   作者:阿松愛(ài)睡覺(jué)  
雖然matplotlib默認(rèn)的坐標(biāo)軸定位器與格式生成器可以滿足大部分需求,但是并非對(duì)每一幅圖都合適,本文主要介紹了Matplotlib自定義坐標(biāo)刻度的使用示例,感興趣的可以了解一下

雖然matplotlib默認(rèn)的坐標(biāo)軸定位器與格式生成器可以滿足大部分需求,但是并非對(duì)每一幅圖都合適。

主次要刻度

學(xué)習(xí)前最好有對(duì)matplotlib圖形的對(duì)象層級(jí)較為了解,例如查看前面的文章。

matplotlibfigure對(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論