1. 程式人生 > 程式設計 >python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式

python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式

用matplotlib畫二維影象時,預設情況下的橫座標和縱座標顯示的值有時達不到自己的需求,需要藉助xticks()和yticks()分別對橫座標x-axis和縱座標y-axis進行設定。

import numpy as np
import matplotlib.pyplot as plt
x = range(1,13,1)
y = range(1,1)
plt.plot(x,y)
plt.show()

x座標和y座標都表示1到12的整數,不進行座標設定時,執行效果為:

python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式

此時的x軸和y軸都是隻顯示偶數,其它的奇數未顯示,這樣在展示實驗效果或放入文章中都會影響其可讀性。

為了設定座標軸的值,增加其可讀性,有多種方法。這裡介紹的是matplotlib的函式xticks()和yticks()。

參考文件:xticks()函式介紹 yticks()函式介紹

xticks()中有3個引數:

xticks(locs,[labels],**kwargs) # Set locations and labels

locs引數為陣列引數(array_like,optional),表示x-axis的刻度線顯示標註的地方,即ticks放置的地方,上述例子中,如果希望顯示1到12所有的整數,就可以將locs引數設定為range(1,1),第二個引數也為陣列引數(array_like,optional),可以不新增該引數,表示在locs陣列表示的位置新增的標籤,labels不賦值,在這些位置新增的數值即為locs陣列中的數。

如下圖

import numpy as np
import matplotlib.pyplot as plt
x = range(1,y)
plt.xticks(x)
plt.show()

python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式

xticks()函式中,locs引數為陣列x,即1到12所有的整數, 即畫出的影象會在這12個位置畫出ticks,即上圖中的刻度線。

當賦予labels的值為空時,則在locs決定的位置上雖然會畫出ticks,但不會顯示任何值。

import numpy as np
import matplotlib.pyplot as plt
x = range(1,y)
plt.xticks(x,())
plt.show()

其效果為:

python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式

該例子中,會明顯看到locs和labels的關係,locs表示位置,labels決定這些位置上的標籤,labels的預設值為和locs相同。

所以,對於labels引數,我們可以賦予其任意其它的值,如人名,月份等等。

import numpy as np
import matplotlib.pyplot as plt
x = range(1,('Tom','Dick','Harry','Sally','Sue','Lily','Ava','Isla','Rose','Jack','Leo','Charlie'))
plt.show()

在每個標籤會依次顯示labels中的人名:

python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式

還可以顯示月份:

import numpy as np
import matplotlib.pyplot as plt
import calendar
x = range(1,calendar.month_name[1:13],color='blue',rotation=60)
plt.show()

顯示效果為:

python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式

這裡添加了 calendar 模組,用於顯示月份的名稱。calendar.month_name[1:13]即1月份到12月份每個月份的名稱的陣列。後面的引數color='blue'表示將標籤顏色置為藍色,rotation表示標籤逆時針旋轉60度。

通過上個示例,可看出第3個引數關鍵字引數**kwargs用於控制labels,具體可通過Text屬性中的定義,新增到該引數中,關於其定義可參考在 Text 查詢。

另外,通過第1個引數locs可以看出,xticks()函式還可以用來設定使x軸上ticks隱藏,即將空陣列賦予它,則沒有tick會顯示在x軸上,此處參考:x軸數值隱藏。

import numpy as np
import matplotlib.pyplot as plt
import calendar
x = range(1,y)
plt.xticks([])
plt.show()

可看出x軸上沒有tick顯示:

python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式

同理,對於yticks()函式定義和xticks()函式定義完全相同。對於第一個例子,如果希望在y軸上的刻度線也顯示1到12所有的整數,則將lens(1,1)賦予yticks()的locs引數即可:

import numpy as np
import matplotlib.pyplot as plt
import calendar
x = range(1,y)
plt.xticks(x)
plt.yticks(y)
plt.show()

其效果為:

python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式

綜上,可以設計一個x軸為月份,y為星期的影象:

import numpy as np
import matplotlib.pyplot as plt
import calendar
from datetime import *
x = range(1,rotation=60)
today = datetime(2018,9,10)
a=[]
for i in range(12):
 a.append(calendar.day_name[today.weekday()+(i%7)])
plt.yticks(y,a,color='red')
plt.show()

python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式

對應一月份選擇星期一,二月份選擇星期二,往後依次類推,直至將12個月安排完。

以上這篇python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。