为何次级网格线未显示

0 投票
2 回答
3289 浏览
提问于 2025-04-17 20:22

我在绘图时遇到了一些麻烦,想要显示次级网格线(也就是那些比较细的线)。我在网上看到了一些相关的问题,比如这个提到可以用两个网格对象(一个用于主网格线,一个用于次网格线),还有这个建议添加minorticks_on来解决这个问题。

不过,不知道为什么我用下面的代码还是看不到次级网格线,谁能帮我看看是什么问题吗:

from __future__ import division
from matplotlib import pyplot as plt
from math import log, sqrt

x = range(1, 20)
x_lin = x
x_log = [log(i) for i in x]

x2 = [sqrt(i) for i in x]
x2_exp = x

ax = plt.subplot(1,1,1)
p1 = ax.plot(x, x_lin, 'g--', label='linear', linewidth=2)
p2 = ax.plot(x, x_log, 'b-', label='log', linewidth=3)
p3 = ax.plot(x2, x2_exp, 'r-', label='exp', linewidth=3)
l1 = ax.legend()
g1 = ax.grid(b=True, which='both', color='k', linestyle='-')
g2 = ax.grid(b=True, which='minor', color='k', linestyle='--')
ax.minorticks_on
plt.show()

这是我得到的结果:

enter image description here

2 个回答

4

根据@M4rtini在这里给出的答案,这是修正后的代码和新的图片:

from __future__ import division
from matplotlib import pyplot as plt
from math import log, sqrt

x = range(1, 20)
x_lin = x
x_log = [log(i) for i in x]

x2 = [sqrt(i) for i in x]
x2_exp = x

ax = plt.subplot(1,1,1)
p1 = ax.plot(x, x_lin, 'g--', label='linear', linewidth=2)
p2 = ax.plot(x, x_log, 'b-', label='log', linewidth=3)
p3 = ax.plot(x2, x2_exp, 'r-', label='exp', linewidth=3)
l1 = ax.legend()
g1 = ax.grid(b=True, which='major', color='k', linestyle='-', linewidth=0.5)
g2 = ax.grid(b=True, which='minor', color='k', linestyle='-', linewidth=0.2)
ax.minorticks_on()
plt.show()

2

ax.minorticks_on 改成 ax.minorticks_on()

撰写回答