在下面的简单示例中,如何使 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()
Run Code Online (Sandbox Code Playgroud)
以下内容使刻度线位于我想要的位置,但网格线也会移动。
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()
Run Code Online (Sandbox Code Playgroud)
您可以设置次要刻度,以便在主要刻度之间仅出现 1 个次要刻度。这是使用matplotlib.ticker.AutoMinorLocator. 然后,将网格线设置为仅出现在小刻度处。您还需要将 xtick 位置移动 0.5:
from matplotlib.ticker import AutoMinorLocator
np.random.seed(10)
x = range(10)
y = np.random.random(10)
plt.plot(x,y)
plt.xticks(np.arange(0.5,10.5,1), x)
plt.xlim(0,9.5)
plt.ylim(0,1)
minor_locator = AutoMinorLocator(2)
plt.gca().xaxis.set_minor_locator(minor_locator)
plt.grid(which='minor')
plt.show()
Run Code Online (Sandbox Code Playgroud)
编辑:我无法让两个AutoMinorLocators 在同一轴上工作。当尝试为 y 轴添加另一个刻度时,小刻度会变得混乱。我发现的解决方法是使用 a 手动设置次要刻度的位置matplotlib.ticker.FixedLocator并传入次要刻度的位置。
from matplotlib.ticker import AutoMinorLocator
from matplotlib.ticker import FixedLocator
np.random.seed(10)
x = range(10)
y = np.random.random(10)
plt.plot(x,y)
plt.xticks(np.arange(0.5,10.5,1), x)
plt.yticks([0.05,0.15,0.25,0.35,0.45,0.55,0.65,0.75,0.85,0.95,1.05], [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1])
plt.xlim(0,9.5)
plt.ylim(0,1.05)
minor_locator1 = AutoMinorLocator(2)
minor_locator2 = FixedLocator([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1])
plt.gca().xaxis.set_minor_locator(minor_locator1)
plt.gca().yaxis.set_minor_locator(minor_locator2)
plt.grid(which='minor')
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9209 次 |
| 最近记录: |