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

时间:2012-10-03 14:58:29

标签: python matplotlib

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

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

6 个答案:

答案 0 :(得分:44)

没关系,我想通了。

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

答案 1 :(得分:22)

这是我在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轴上放置次要刻度,因为默认情况下会关闭次要刻度。

答案 2 :(得分:6)

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

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

答案 3 :(得分: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()

答案 4 :(得分:1)

以下片段应该会有所帮助:

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.

答案 5 :(得分:0)

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

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

一个最小的例子:

{"name": "exempel", "text": "exempel"}

替代方法

或者,我们可以使用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

结果

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

plot with minor ticks on y-axis only