如何使用Matplotlib在对数 - 对数图上的所有刻度线上显示对数间隔的网格线?

Bry*_*mas 28 grid matplotlib

我正在尝试绘制一个对数 - 对数图,该图显示沿着图的底部和左侧看到的所有刻度线上的对数间隔网格线.我已经能够通过使用显示一些网格线matplotlib.pyplot.grid(True),但这只是以10个间隔的功率显示网格线.举个例子,这是我目前得到的:

替代文字

我真的很喜欢网格线看起来更像这样的东西,网格线并非都是均匀间隔的:

替代文字

我将如何在Matplotlib中实现这一目标?

Jus*_*eel 37

基本上,您只需要which="both"在grid命令中输入参数,使其变为:

matplotlib.pyplot.grid(True, which="both")
Run Code Online (Sandbox Code Playgroud)

其他选项是"次要"和"主要",它们是主要的刻度(在图中显示)和您缺少的次要刻度.如果你想要实线,那么你也可以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()
Run Code Online (Sandbox Code Playgroud)

产生:

日志日志图

  • 我发现在我的机器上使用"both"会导致显示主要或次要网格线.通过一些谷歌搜索,我发现这篇文章:http://www.mailinglistarchive.com/html/matplotlib-users@lists.sourceforge.net/2010-06/msg00174.html这似乎暗示旧版本的matplotlib需要使用" majorminor"而不是"两个".您知道版本之间是否有任何关于此更改的官方文档?我看过http://matplotlib.sourceforge.net/api/api_changes.html,但似乎没有提到它...... (2认同)

Pab*_*rro 6

正如@Bryce所说,在我的机器中正确的kwarg是majorminor。我认为颜色较浅的实线可能比虚线更好。

plt.grid(True,which="majorminor",ls="-", color='0.65')
Run Code Online (Sandbox Code Playgroud)

为我工作。

  • Matblotlib 版本 3.1.2 参数必须是 `which='both'` (2认同)