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

kuhbmx9i  于 2023-10-24  发布在  其他
关注(0)|答案(6)|浏览(113)

如何在线性与线性图上仅在y轴上旋转次要刻度?
当我使用函数minor_ticks_on打开次要刻度时,它们同时出现在x轴和y轴上。

j2cgzkjk

j2cgzkjk1#

算了,我想明白了。

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

ulydmbyx2#

下面是我在matplotlib documentation中发现的另一种方法:

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轴上,因为默认情况下次要刻度是关闭的。

rseugnpd

rseugnpd3#

为了澄清@emad的答案的过程,在默认位置显示小刻度的步骤是:
1.为axes对象启用次要刻度,以便在Matplotlib认为合适的时候初始化位置。
1.关闭不需要的次要刻度。
一个最小的例子:

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在默认位置获取次要tick:

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轴上有较小的刻度。

cdmah0mi

cdmah0mi4#

要在自定义位置设置次要刻度,请执行以下操作:

ax.set_xticks([0, 10, 20, 30], minor=True)
wgx48brx

wgx48brx5#

此外,如果您只想在实际的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()
6za6bjd0

6za6bjd06#

以下代码片段应该有所帮助:

from matplotlib.ticker import MultipleLocator
ax.xaxis.set_minor_locator(MultipleLocator(#))
ax.yaxis.set_minor_locator(MultipleLocator(#))

# refers to the desired interval between minor ticks.

相关问题