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的整數,不進行座標設定時,執行效果為:
此時的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()
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()
其效果為:
該例子中,會明顯看到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中的人名:
還可以顯示月份:
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()
顯示效果為:
這裡添加了 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顯示:
同理,對於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()
其效果為:
綜上,可以設計一個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()
對應一月份選擇星期一,二月份選擇星期二,往後依次類推,直至將12個月安排完。
以上這篇python_matplotlib改變橫座標和縱座標上的刻度(ticks)方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。