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

ema*_*mad 64 python matplotlib

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

当我使用该函数打开次要刻度时,它们出现在x轴和y轴上.

ema*_*mad 47

没关系,我明白了.

ax.tick_params(axis='x', which='minor', bottom=False)
Run Code Online (Sandbox Code Playgroud)

  • 使用这个我得到一个'MatplotlibDeprecationWarning`来使用`bottom ='off'`.显然应该使用`ax.tick_params(axis ='x',='minor',bottom = False). (3认同)

Joh*_*ard 25

这是我在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()
Run Code Online (Sandbox Code Playgroud)

这将在y轴上放置小刻度,因为默认情况下小刻度是关闭的.

  • 我建议使用`plt.axes()。yaxis.set_minor_locator(MultipleLocator(5))`而不是首先初始化`ml`。如果您重新使用`ml`,可能会导致难以发现的可怕错误。另外,更自然的选择可以是“ AutoMinorLocator”,除非需要一些特定的东西。 (2认同)

spi*_*nup 14

为了澄清@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)
Run Code Online (Sandbox Code Playgroud)

替代方法

或者,我们可以使用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())
Run Code Online (Sandbox Code Playgroud)

结果

无论哪种方式,结果图都只在 y 轴上有小刻度。

仅在 y 轴上绘制小刻度


Evg*_*eev 8

要在自定义位置设置次要刻度:

ax.set_xticks([0, 10, 20, 30], minor=True)
Run Code Online (Sandbox Code Playgroud)


mar*_*ano 5

此外,如果您只想在实际的y轴上进行小刻度,而不是在图的左侧和右侧,您可以按照plt.axes().yaxis.set_minor_locator(ml)with 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()
Run Code Online (Sandbox Code Playgroud)