簡體   English   中英

顯示僅具有主要刻度標簽的小刻度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM