我正在尝试绘制一个对数-对数图,该图在底部和左侧的刻度线上显示以对数间隔排列的网格线。我已经能够使用matplotlib.pyplot.grid(True)
显示了一些网格线,但这仅在10的幂级别上为我显示网格线。因此,以下是我目前所得到的示例:
我希望能够得到一些类似于这样的网格线,其中网格线并不是均匀分布的:
我该如何在Matplotlib中实现这个目标?
我正在尝试绘制一个对数-对数图,该图在底部和左侧的刻度线上显示以对数间隔排列的网格线。我已经能够使用matplotlib.pyplot.grid(True)
显示了一些网格线,但这仅在10的幂级别上为我显示网格线。因此,以下是我目前所得到的示例:
我希望能够得到一些类似于这样的网格线,其中网格线并不是均匀分布的:
我该如何在Matplotlib中实现这个目标?
基本上,你只需要在网格命令中加入参数which="both"
,使其变为:
matplotlib.pyplot.grid(True, which="both")
另外还有“minor”和“major”的选项,它们是主刻度线(在您的图表中显示)和您缺少的次刻度线。如果您想要实线,则也可以将ls="-"
作为grid()
的参数使用。
以下是一个示例:
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(0, 100, .5)
y = 2 * x**3
plt.loglog(x, y)
plt.grid(True, which="both", ls="-")
plt.show()
生成的结果如下:
有关详细信息,请参阅Matplotlib文档
就像 @Bryce 说的那样,在旧版本的 matplotlib 中,正确的关键字参数是 which=majorminor
。我认为使用浅色实线可能比虚线更好。
plt.grid(True, which="majorminor", ls="-", color='0.65')
plt.grid(True, which="both", ls="-", color='0.65')
zorder=3
设置到我的实际(直方图)绘图中,因为网格线会穿过我的条形图。 - moooeeeepwhich='both'
。 - Gustavo