如何仅在y轴上打开次刻度线matplotlib


77

如何在线性与线性图上仅在y轴上旋转次刻度?

当我使用该功能minor_ticks_on打开次刻度时,它们同时出现在x和y轴上。


44
找到了..plt.minorticks_on()
drevicko

Answers:


55

没关系,我知道了。

ax.tick_params(axis='x', which='minor', bottom=False)

4
使用这个我得到一个MatplotlibDeprecationWarning使用bottom='off'。显然ax.tick_params(axis='x',which='minor',bottom=False)应该代替使用。
ThomasKühn'18

29

这是我在matplotlib文档中找到的另一种方式:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.ticker import MultipleLocator

a = np.arange(100)
ml = MultipleLocator(5)
plt.plot(a)
plt.axes().yaxis.set_minor_locator(ml)
plt.show()

由于默认情况下较小的刻度是关闭的,因此这只会在y轴上放置较小的刻度。


2
我建议使用plt.axes().yaxis.set_minor_locator(MultipleLocator(5))而不是首先初始化ml。如果重用,ml可能会导致很难发现的可怕错误。AutoMinorLocator除非要求某些特定的东西,否则更自然的选择可能是。
DerWeh


11

为了阐明@emad的回答过程,在默认位置显示小刻度的步骤是:

  1. 为轴对象启用次要刻度,以便在Matplotlib认为合适的情况下初始化位置。
  2. 关闭不需要的较小刻度线。

一个最小的例子:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
plt.plot([1,2])

# Currently, there are no minor ticks,
#   so trying to make them visible would have no effect
ax.yaxis.get_ticklocs(minor=True)     # []

# Initialize minor ticks
ax.minorticks_on()

# Now minor ticks exist and are turned on for both axes

# Turn off x-axis minor ticks
ax.xaxis.set_tick_params(which='minor', bottom=False)

替代方法

另外,我们可以使用AutoMinorLocator以下命令在默认位置获得较小的滴答声:

import matplotlib.pyplot as plt
import matplotlib.ticker as tck

fig, ax = plt.subplots()
plt.plot([1,2])

ax.yaxis.set_minor_locator(tck.AutoMinorLocator())

结果

无论哪种方式,生成的图仅在y轴上都有较小的刻度。

仅在y轴上绘制带有较小刻度的图


5

另外,如果您只想轻微滴答声的实际y轴,而不是在图的左侧和右侧的两侧,就可以按照plt.axes().yaxis.set_minor_locator(ml)plt.axes().yaxis.set_tick_params(which='minor', right = 'off'),就像这样:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.ticker import MultipleLocator

a = np.arange(100)
ml = MultipleLocator(5)
plt.plot(a)
plt.axes().yaxis.set_minor_locator(ml)
plt.axes().yaxis.set_tick_params(which='minor', right = 'off')
plt.show()
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.