我如何在 matplotlib 中设置小刻度的位置
How can i set the location of minor ticks in matplotlib
我想在 matplotlib 绘图中的 x 轴上在次要刻度的位置而不是主要刻度的位置绘制一个网格。我的市长标记位于位置 0、1、2、3、4、5 并且必须保留在那里。我希望网格为 0.5、1.5、2.5、3.5、4.5。
....
from matplotlib.ticker import MultipleLocator
....
minorLocator = MultipleLocator(0.5)
ax.xaxis.set_minor_locator(minorLocator)
plt.grid(which='minor')
上面的代码不起作用,因为它给出了 0.5、1.0、1.5 等位置,我如何手动设置次刻度的位置?
您可以使用 matplotlib.ticker.AutoMinorLocator
。这将自动将 N-1 个次要刻度放置在主刻度之间等距的位置。
例如,如果您使用 AutoMinorLocator(5)
,那么这将在每对主刻度之间放置 4 个等距的次刻度。对于您的用例,您希望 AutoMinorLocator(2)
只在中点放置一个。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import AutoMinorLocator
N = 1000
x = np.linspace(0, 5, N)
y = x**2
fig, ax = plt.subplots()
ax.plot(x, y)
minor_locator = AutoMinorLocator(2)
ax.xaxis.set_minor_locator(minor_locator)
plt.grid(which='minor')
plt.show()
使用 AutoMinorLocator
的优点是如果您需要扩大数据,例如您的主要刻度位于 [0, 10, 20, 30, 40, 50]
,那么您的次要刻度将扩大到位置 [=16] =].
如果您确实需要硬设置位置,甚至在 scaling/changing 之后,请查找 matplotlib.ticker.FixedLocator
。有了这个你可以传递一个固定列表,例如 FixedLocator([0.5, 1.5, 2.5, 3.5, 4.5])
.
我想在 matplotlib 绘图中的 x 轴上在次要刻度的位置而不是主要刻度的位置绘制一个网格。我的市长标记位于位置 0、1、2、3、4、5 并且必须保留在那里。我希望网格为 0.5、1.5、2.5、3.5、4.5。
....
from matplotlib.ticker import MultipleLocator
....
minorLocator = MultipleLocator(0.5)
ax.xaxis.set_minor_locator(minorLocator)
plt.grid(which='minor')
上面的代码不起作用,因为它给出了 0.5、1.0、1.5 等位置,我如何手动设置次刻度的位置?
您可以使用 matplotlib.ticker.AutoMinorLocator
。这将自动将 N-1 个次要刻度放置在主刻度之间等距的位置。
例如,如果您使用 AutoMinorLocator(5)
,那么这将在每对主刻度之间放置 4 个等距的次刻度。对于您的用例,您希望 AutoMinorLocator(2)
只在中点放置一个。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import AutoMinorLocator
N = 1000
x = np.linspace(0, 5, N)
y = x**2
fig, ax = plt.subplots()
ax.plot(x, y)
minor_locator = AutoMinorLocator(2)
ax.xaxis.set_minor_locator(minor_locator)
plt.grid(which='minor')
plt.show()
使用 AutoMinorLocator
的优点是如果您需要扩大数据,例如您的主要刻度位于 [0, 10, 20, 30, 40, 50]
,那么您的次要刻度将扩大到位置 [=16] =].
如果您确实需要硬设置位置,甚至在 scaling/changing 之后,请查找 matplotlib.ticker.FixedLocator
。有了这个你可以传递一个固定列表,例如 FixedLocator([0.5, 1.5, 2.5, 3.5, 4.5])
.