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

Matplotlib自定義坐標刻度的使用示例

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

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

主次要刻度

學習前最好有對matplotlib圖形的對象層級較為了解,例如查看前面的文章。

matplotlibfigure對象是一個盛放圖形元素的包圍盒??梢詫⒚總€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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論