在下面的简单示例中,如何使x轴刻度值显示在网格之间?
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(1)
x = range(10)
y = np.random.random(10)
plt.plot(x,y)
plt.xticks(x)
plt.grid(True)
plt.show()
下面的代码使刻度位于我想要的位置,但网格线也会移动。
np.random.seed(1)
x = range(10)
y = np.random.random(10)
plt.plot(x,y)
plt.xticks(x)
plt.grid(True)
plt.xticks(np.arange(10)+0.5, x)
plt.show()
我希望结果是:
2条答案
按热度按时间2fjabf4q1#
您可以设置次要刻度,以便在主要刻度之间只显示1个次要刻度。这是使用
matplotlib.ticker.AutoMinorLocator
完成的。然后,将网格线设置为仅显示在次要刻度处。您还需要将xtick位置移动0.5:编辑:我很难让两个
AutoMinorLocator
在同一个轴上工作。当试图为y轴添加另一个时,次要刻度会变得混乱。我发现的一种解决方法是使用matplotlib.ticker.FixedLocator
手动设置次要刻度的位置,并传入次要刻度的位置。yduiuuwa2#
如果你使用plt.subplots来创建图形,你也会得到一个axes对象:
这一个有一个更好的界面来调整网格/刻度。然后你可以给予显式的x值为你的数据移动0.5到左边。同样的做与次要刻度,让网格显示在次要刻度: