Matplotlib 坐標軸


一、坐標軸上下限

使用plt.xlim()plt.ylim()來調整上下限的值:

import numpy as np import matplotlib.pyplot as plt x = np.linspace(0,10,100) plt.plot(x,np.sin(x)) plt.xlim(-1,11) plt.ylim(-1.5,1.5)
plt.show()

也可以讓坐標軸逆序顯示,只需要逆序提供坐標軸的限值:

plt.plot(x,np.sin(x)) plt.xlim(11,-1) plt.ylim(1.5,-1.5)

或者使用plt.axis()方法設置坐標軸的上下限(注意區別axes和axis),參數方式是[xmin, xmax, ymin, ymax]

plt.plot(x,np.sin(x)) plt.axis([-1,11,-1.5,1.5])

axis的作用不僅於此,還可以按照圖形的內容自動收縮坐標軸,不留空白。此種情況下,x和y軸的限值會自動計算,不用提供:

plt.plot(x,np.cos(x)) plt.axis('tight') # -0.5, 10.5, -1.0993384025373631, 1.0996461858110391)

更多類似的常用設置值有:

  • off:隱藏軸線和標簽
  • tight:緊縮模式
  • equal:以1:1的格式顯示,x軸和y軸的單位長度相等
  • scaled: 通過更改繪圖框的尺寸來獲得相同的結果
  • square: x軸和y軸的限制值一樣

二、坐標軸刻度

通常情況下,系統會自動根據提供的原始數據,生成x和y軸的刻度標簽。但是很多時候,我們往往需要自定義刻度,讓它符合我們的需要,比如下面的例子:

plt.plot(np.random.randn(1000).cumsum()) plt.show()

我們可以手動提供刻度值,並調整刻度的角度和大小:

plt.plot(np.random.randn(1000).cumsum()) plt.xticks([0,250,500,750,1000],rotation=30, fontsize='large') plt.yticks([-45,-35,-25,-15,0],rotation=30, fontsize='small') plt.show()

三、坐標軸刻度詳解

Matplotlib圖形對象具有層級關系。Figure對象其實就是一個盛放圖形元素的盒子box,每個figure都會包含一個或多個axes對象,而每個axes對象又會包含其它表示圖形內容的對象,比如xais和yaxis,也就是x軸和y軸。

  • 主要刻度和次要刻度

每個坐標軸都有主要刻度和次要刻度,主要刻度往往更大或者突出顯示,而次要刻度往往更小,一般不直接顯示。

下面是一個對數坐標軸,可以看到次要刻度:

ax = plt.axes(xscale='log', yscale='log')

我們發現每個主要刻度都顯示未一個較大的刻度線和標簽,而次要刻度都顯示為一個較小的刻度線,並且不現實標簽。

 

  • 隱藏刻度與標簽

如果我們想隱藏刻度或標簽,就要着落在locator和formatter這兩大屬性上了:

ax = plt.axes() x = np.linspace(0,10,100) ax.plot(np.cos(x)) ax.yaxis.set_major_locator(plt.NullLocator()) ax.xaxis.set_major_formatter(plt.NullFormatter()) plt.show()

可以看出,沒有locator,刻度和標簽都會被隱藏起來;沒有formatter,隱藏標簽,但刻度還存在。

  • 設置刻度數量

默認情況下,matplotlib會自動幫我們調節刻度的數量,但有時候也需要我們自定義刻度數量:

fig, ax = plt.subplots(4, 4, sharex=True, sharey=True) for axi in ax.flat: axi.xaxis.set_major_locator(plt.MaxNLocator(4)) axi.yaxis.set_major_locator(plt.MaxNLocator(4)) plt.show()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM