【Matplotlib】 刻度設置(2)

Tick locating and formatting


該模塊包括許多類以支持完整的刻度位置和格式的配置。儘管 locators 與主刻度或小刻度沒有關係,他們經由 Axis 類使用來支持主刻度和小刻度位置和格式設置。通常狀況下,刻度位置和格式均已提供,一般也是最經常使用的形式。html

默認格式

當x軸數據繪製在一個大間隔的一個小的集中區域時,默認的格式將會生效。爲了減小刻度標註重疊的可能性,刻度被標註在固定間隔之間的空白區域。好比:python

ax.plot(np.arange(2000, 2010), range(10))

表現形式以下:api

刻度僅標註了 0-9 以及一個間隔 +2e3 。若是不但願這種形式,能夠關閉默認格式設置中的間隔標註的使用。ide

ax.get_xaxis().get_major_formatter().set_useOffset(False)

設置 rcParam axes.formatter.useoffset=False 以在全局上關閉,或者設置不一樣的格式。spa

刻度位置

Locator 類是全部刻度 Locators 的基類。 locators 負責根據數據的範圍自動調整視覺間隔,以及刻度位置的選擇。 MultipleLocator 是一種有用的半自動的刻度 Locator。 你能夠經過基類進行初始化設置等等。code

Locator 子類定義以下:orm

NullLocator No ticks
FixedLocator Tick locations are fixed
IndexLocator locator for index plots (e.g., where x = range(len(y)))
LinearLocator evenly spaced ticks from min to max
LogLocator logarithmically ticks from min to max
SymmetricalLogLocator locator for use with with the symlog norm, works like the LogLocator for the part outside of the threshold and add 0 if inside the limits
MultipleLocator ticks and range are a multiple of base;either integer or float
OldAutoLocator choose a MultipleLocator and dyamically reassign it for intelligent ticking during navigation
MaxNLocator finds up to a max number of ticks at nice locations
AutoLocator MaxNLocator with simple defaults. This is the default tick locator for most plotting.
AutoMinorLocator locator for minor ticks when the axis is linear and the major ticks are uniformly spaced. It subdivides the major tick interval into a specified number of minor intervals, defaulting to 4 or 5 depending on the major interval.

你能夠繼承 Locator 定義本身的 locator。 你必須重寫 ___call__ 方法,該方法返回位置的序列,你可能也想重寫 autoscale 方法以根據數據的範圍設置視覺間隔。htm

若是你想重寫默認的locator,使用上面或經常使用的locator任何一個, 將其傳給 x 或 y axis 對象。相關的方法以下:對象

ax.xaxis.set_major_locator( xmajorLocator )
ax.xaxis.set_minor_locator( xminorLocator )
ax.yaxis.set_major_locator( ymajorLocator )
ax.yaxis.set_minor_locator( yminorLocator )

刻度格式

刻度格式由 Formatter 繼承來的類控制。 formatter僅僅做用於單個刻度值而且返回軸的字符串。
相關的子類請參考官方文檔。繼承

一樣也能夠經過重寫 __all__ 方法來繼承 Formatter 基類以設定本身的 formatter。

爲了控制主刻度或小刻度標註的格式,使用下面任一方法:

ax.xaxis.set_major_formatter( xmajorFormatter )
ax.xaxis.set_minor_formatter( xminorFormatter )
ax.yaxis.set_major_formatter( ymajorFormatter )
ax.yaxis.set_minor_formatter( yminorFormatter )

設置刻度標註


相關文檔:

原型舉例:

set_xticklabels(labels, fontdict=None, minor=False, **kwargs)

綜合舉例(1)以下:

設置指定位置的標註更改成其餘的標註:

...
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
          [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

plt.yticks([-1, 0, +1],
          [r'$-1$', r'$0$', r'$+1$'])
...

綜合舉例(2)以下:

設置座標軸主刻度和次刻度。

#!/usr/bin/env python
#-*- coding: utf-8 -*- 
#---------------------------------------------------
#演示MatPlotLib中設置座標軸主刻度標籤和次刻度標籤.

#對於次刻度顯示,若是要使用默認設置只要matplotlib.pyplot.minorticks_on()

#---------------------------------------------------

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FormatStrFormatter

#---------------------------------------------------
xmajorLocator   = MultipleLocator(20) #將x主刻度標籤設置爲20的倍數
xmajorFormatter = FormatStrFormatter('%5.1f') #設置x軸標籤文本的格式
xminorLocator   = MultipleLocator(5) #將x軸次刻度標籤設置爲5的倍數


ymajorLocator   = MultipleLocator(0.5) #將y軸主刻度標籤設置爲0.5的倍數
ymajorFormatter = FormatStrFormatter('%1.1f') #設置y軸標籤文本的格式
yminorLocator   = MultipleLocator(0.1) #將此y軸次刻度標籤設置爲0.1的倍數

 
t = np.arange(0.0, 100.0, 1)
s = np.sin(0.1*np.pi*t)*np.exp(-t*0.01)

ax = plt.subplot(111) #注意:通常都在ax中設置,再也不plot中設置
plt.plot(t,s,'--r*')

#設置主刻度標籤的位置,標籤文本的格式
ax.xaxis.set_major_locator(xmajorLocator)
ax.xaxis.set_major_formatter(xmajorFormatter)

ax.yaxis.set_major_locator(ymajorLocator)
ax.yaxis.set_major_formatter(ymajorFormatter)

#顯示次刻度標籤的位置,沒有標籤文本
ax.xaxis.set_minor_locator(xminorLocator)
ax.yaxis.set_minor_locator(yminorLocator)

ax.xaxis.grid(True, which='major') #x座標軸的網格使用主刻度
ax.yaxis.grid(True, which='minor') #y座標軸的網格使用次刻度

plt.show()

##########################################################

圖像形式以下:

相關文章
相關標籤/搜索