[英]Minor ticks with only major tick labels are shown
我想在軸上有一個小刻度,但只顯示主刻度標簽。 例如,次要刻度是[19,20,21,... 40,41],主刻度標簽是[20,25,30,35,40]。 我該怎么做? 下面的代碼沒有完成這項工作。 我知道可以像這個例子一樣使用MultipleLocator,FormatStrFormatter。 但是,我在軸上的值有點“奇怪”,起始值為19(不是20),結束值為41,這在使用MultipleLocator時會造成困難。
import numpy as np
from matplotlib import pylab as plt
fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(19.,41,23)
y = x**2
ax.plot(x,y)
ax.set_xticks(x)
ax.set_xticklabels(x, minor=False)
plt.show()
它給了我以下情節:
或者ax.set_xticklabels([20, 25, 30, 35, 40], minor=False)
給我另一個情節: 如何更改我的代碼以獲得我需要的內容。 非常感謝你的幫助!
我真的不明白為什么在你的例子中使用MultipleLocator
很困難。
在代碼中添加這些行
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
majorLocator = MultipleLocator(5)
majorFormatter = FormatStrFormatter('%d')
minorLocator = MultipleLocator(1)
ax.xaxis.set_major_locator(majorLocator)
ax.xaxis.set_major_formatter(majorFormatter)
ax.xaxis.set_minor_locator(minorLocator)
你會得到這個圖像,我明白這是你想要的(不是嗎?):
如果您不希望刻度顯示在數據范圍下方,請使用FixedLocator
手動定義刻度:
from matplotlib.ticker import FixedLocator
majorLocator = FixedLocator(np.linspace(20,40,5))
minorLocator = FixedLocator(np.linspace(19,41,23))
你會得到這個圖像:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.